http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 12852|回复: 13

[其他] 一个用C#制作QQ登陆器的问题

[复制链接]
发表于 2013-4-3 22:44:51 | 显示全部楼层 |阅读模式
为什么用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);
            }
        }
    }


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2013-4-6 19:00:48 | 显示全部楼层
嗯嗯。。。不过貌似有点深奥的样子呀。。谢谢呀。飞哥。。。不过这个怎样结贴呀。。 =。=   
解决了
发表于 2013-4-3 23:03:29 | 显示全部楼层
协议不支持,这个协议太老了
 楼主| 发表于 2013-4-4 11:24:10 | 显示全部楼层
但是我新申请的QQ可以用。。。可以登录上。。但是以前申请的老QQ都不能用了。。。。
为什么新申请的QQ可以用。。。
发表于 2013-4-4 11:26:28 | 显示全部楼层
bin8673853 发表于 2013-4-4 11:24
但是我新申请的QQ可以用。。。可以登录上。。但是以前申请的老QQ都不能用了。。。。
为什么新申请的QQ可以 ...

哈哈,这个真解释不了,只要能用就行了
 楼主| 发表于 2013-4-4 11:27:42 | 显示全部楼层
站长苏飞 发表于 2013-4-4 11:26
哈哈,这个真解释不了,只要能用就行了

飞哥。。这个东西是你写的额。。哈哈。。不知道你还记得不
发表于 2013-4-4 11:30:51 | 显示全部楼层
我知道,看类名我就看出来了,哈哈,所以我说协议过期了,不是最新的接口,达不到通用,只有部分可以
发表于 2013-4-4 11:31:38 | 显示全部楼层
perky是我的网名,哈哈
 楼主| 发表于 2013-4-5 12:34:13 | 显示全部楼层
登录过程
GET /login?u=2249786916&p=.....密码.....&verifycode=!YVW&webqq_type=10&remember_uin=1&login2qq=1&aid=1003903&u1=http%3A%2F%2Fweb.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=7-23-37860&mibao_css=m_webqq&t=1&g=1&js_type=0&js_ver=10025&login_sig=uLRu6VSohMuVpLfuO-wSTthTFZEFlUsicKti1M-WRemze268X78vf896qg4LGL82 HTTP/1.1



主机                        ssl.ptlogin2.qq.com
GET                        GET方式提交
u                        QQ号2249786916
p                        密码
verifycode                验证码!YVW 值为!YVW估计也是不用验证码
webqq_type                应该是登录类型10是正常登录
remember_uin                这个是记住账号
login2qq                同时登录QQ
aid=1003903                这个资料说也是记住账号
u1                        资料说这个是固定的http://web.qq.com/loginproxy.html?login2qq=0&webqq_type=10
资料说后面都是固定的



登录结果
6f ptuiCB('0','0','http://web.qq.com/loginproxy.html?login2qq=1&webqq_type=10','0','登录成功', '西西'); 0

第一个参数:
0:登录成功
1:系统繁忙,请稍后再试
2:已过期的QQ号码
3:你输入的密码有误,请重试
4:你输入的验证码有误,请重试
5:效验失败。
6:密码错误,如果你刚修改过密码,请稍后再登录
7:你的输入有误,请重试
8:你的IP输入错误次数过多,请稍后再试。

第二个参数未知

第三个参数:
http://web.qq.com/loginproxy.html?login2qq=1&webqq_type=10
登录成功后返回的页面

第四个也不知道

第五个参数:
登录成功

第六个参数:
Q名西西


这个是我分析的webQQ的协议。。是不是只要GET上面的信息到ssl.ptlogin2.qq.com主机就可以实现登录了?
 楼主| 发表于 2013-4-5 22:30:28 | 显示全部楼层
飞哥。。上面的问题知道为什么不行了。。
他提示什么cookies的。。。
是因为我没有提交他返回的Cookies
那请问我应该怎样获取服务器返回的Cookies呢?
发表于 2013-4-5 22:33:31 | 显示全部楼层
用我的类,看看教程可以直接接收
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-24 02:33

© 2014-2021

快速回复 返回顶部 返回列表