|
为什么用C#做得QQ登陆器有些QQ无法登陆,有些却可以呢?
同样都是用的QQ协议
postValues = "VER=1.1&CMD=Login&SEQ=" + rd.Next(1000,9000)+ "&UIN=" + num + "&PS=" + MD5(pwd) + " &M5=1&LC=9326B87B234E7235";
账号密码什么的都没问题。。
请问是不是不同的QQ用的协议是不同的?
还是用的端口不一样?
以下是代码:
PerkyQQ objqq = null;
private void button1_Click(object sender, EventArgs e)
{
try
{
//在这里写线程内容
objqq = new PerkyQQ(textBox1.Text.Trim(), textBox2.Text.Trim());
if (objqq.QQ_Login())
{
MessageBox.Show("objqq.QQ_Login返回真");
foreach (string item in objqq.QQ_List())
{
treeView1.Nodes.Add(item.Trim());
}
//在这里写线程内容
for (int i = 2; i < treeView1.Nodes.Count - 1; i++)
{
treeView1.Nodes.Text = treeView1.Nodes.Text + objqq.QQ_GetInfo(treeView1.Nodes.Text.Trim())[14].ToString();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
//这是perkyQQ.cs文件的代码。。就是另一个类
public class PerkyQQ
{
public string num; //构造函数的QQ号码
private string pwd; //构造函数的QQ密码
private string postValues; //发送给服务器的字符串
private byte[] byteArray; //把要发送的字符串变成字符数组
private byte[] pageData; //接受服务器返回的字符数组
private string s; //把返回的字符数组变成字符串
private WebClient _client = new WebClient(); //用来给服务器发送消息的
public PerkyQQ(string QQ_Num, string QQ_Pwd) //构造函数
{
this.num = QQ_Num;
this.pwd = QQ_Pwd;
}
public bool QQ_Login()
{
Random rd = new Random();
postValues = "VER=1.1&CMD=Login&SEQ=" + DateTime.Now.Ticks.ToString().Substring(7, 7)
+ "&UIN=" + num + "&PS=" + MD5(pwd) + " &M5=1&LC=9326B87B234E7235";
byteArray = Encoding.UTF8.GetBytes(postValues);
//向服务器POST数据
UploadData();
if (Encoding.UTF8.GetString(pageData).Contains("RES=0&RS=0"))
{
is_RightLogin = true;
return true;
}
else
return false;
}
//发送数据的函数
private void UploadData()
{
try
{
pageData = _client.UploadData("http://tqq.tencent.com:8000", "POST", byteArray);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
|
|