我正在为Minecraft制作一个发射器。 1.6.2改变很多,所以你登录的方式不同。如果你们中的任何人有使用C#登录我的世界的任何知识,我将不胜感激。
wClient.DownloadString("http://login.minecraft.net/?user=" + strUsername + "&password=" + strPassword + "&version=13");
我相信这曾经是一种有效的方式,但我不太确定了。感谢帮助,谢谢。
答案 0 :(得分:3)
回复TheUnrealMegashark对Rhys Towey's Answer的评论。我一直在努力让它发布,但是。它让我失望了。下一次更新将包括1.6修复。只是弄明白了。
您问题的正确答案是提取会话的网络链接目前仍在使用中。没有什么新东西。
小心!你必须知道你的
“http://login.minecraft.net/?user=”+ strUsername +“& password =”+ strPassword +“& version = 13”
不安全。它通过互联网以纯文本形式发送用户的密码。它可能受到“中间人”攻击。
加密连接的正确方法之一是使用HTTPS和POST。使用POST,我避免发送请求URL中的所有数据并通过POST发送数据。使用HTTPS,我加密请求URL返回后发送的任何数据。 HTTPS使POST加密,从而删除“中间人”攻击。
你可以使用GET和HTTPS,它仍然是安全的(从我读过的)。但是,它被认为是一种不安全的做法。虽然它在您的计算机和连接设备之间的所有帐户中都是安全的,但在其他任何地方都可以看到并且受到“攻击后的人”的影响。我的意思是,当您发送此URL时,您的计算机可以在某种历史记录中记录URL,或者以纯文本形式显示在地址栏中。虽然,感觉你没有制作网页浏览器并且没有显示网址,但这可能都会被遗忘。
但是,如果是我,我仍然会安全地使用更安全的策略。
在POST中使用HTTPS。
这是我在“AtomLauncher”中使用的代码示例。此代码将POST数据发送到URL并返回一个字符串。转到http://www.minecraftwiki.net/wiki/Minecraft.net以获取有关返回的字符串的更多信息。
string mcURLData = "Error";
using (WebClient client = new WebClient()) // Get Data from Minecraft with username and password
{
// This a Text control for my Program, ignore this commented line if you wish.
// this.Invoke(new MethodInvoker(delegate { homeLabelTop.Text = "Connecting to Minecraft.net..."; }));
try
{
System.Collections.Specialized.NameValueCollection urlData = new System.Collections.Specialized.NameValueCollection();
urlData.Add("user", "UserName");
urlData.Add("password", "MYPa22w0rd");
urlData.Add("version", "13");
byte[] responsebytes = client.UploadValues("https://login.minecraft.net", "POST", urlData);
mcURLData = Encoding.UTF8.GetString(responsebytes);
}
catch
{
if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
{
mcURLData = "Internet Disconnected.";
}
else
{
mcURLData = "Can't connect to login.minecraft.net.";
}
}
}
在GET中使用HTTPS
只需更改
HTTP
在您的代码中
HTTPS
在其他新闻中。
我修复了我的代码。随意(当它上传时)使用它。 为了您的信息,您需要知道当1.6.X启动时,它会创建一个它立即开始使用的本机文件夹。我为解决这个问题所做的是运行1.6.2并复制它创建的natives文件夹并删除该号码。
Created "version/1.6.2/1.6.2-natives-###"
Copied it to "version/1.6.2/1.6.2.natives"
Point my program to "natives" folder I created.
我将来最终会做的是自动检查natives文件夹,如果它不存在,我将从互联网上下载本机。 (我很想知道我的飞船在哪里得到它当前的本地人所以我基本上可以做同样的事情。除非,它做的是每次它发布时从互联网上下载它。如果是真的,那就是那种丑陋。看到我有带宽使用限制。)