PHP模拟QQ登录

在微博上看到网友使用PHP实现自动挂QQ,就自我思考了下模拟登录的方式。在PHP中CURL模拟提交则可以很简单的实现登录动作,这个方式在ASP则较难实现,使用JS倒是有点思路,但JS不能跨域限制就让我傻眼了。不过至少那位网友也是使用了PHP的curl实现的。好,让咱这个PHP的门外汉也试试吧。

PHP我确实是刚看,至于什么是curl,上php官网查,虽然不明白到底是什么意思,但照葫芦画瓢还是会的,共享万岁。因为是由程序来自动提交登录的,所有JS在程序里面就没什么用处了,而且要找个流量小的,太大程序下载的速度就会非常慢,最后定在使用3gqq登录方式。

跟着CURL的参数来,找个提交登录的3gqq的登陆URL,http://pt5.3g.qq.com/,因为网页格式是wap格式的,所以只有使用chrome或者opera才能访问,否则都会出现下载提示,IE8也不能访问,IE9不知道会不会改善。查看源码,会看到就几个输入框和几个隐藏的输入框,相信看到这里的你知道是神马个东西了。

<?php 
$qqno='你的QQ';
$qqpw='QQ密码';
$cookie = dirname(__FILE__).'/cookie.txt';
$post = array(
	'login_url' => 'http://pt.3g.qq.com/s?sid=ATAll43N7ZULRQ5V8zdfojol&aid=nLogin',
	'q_from' => '',
	'loginTitle' => 'login',
	'bid' => '0',
	'qq' => $qqno,
	'pwd' => $qqpw,
	'loginType' => '1',
	'loginsubmit' => 'login',
);
$curl = curl_init('http://pt.3g.qq.com/handleLogin?aid=nLoginHandle&sid=ATAll43N7ZULRQ5V8zdfojol');
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); // ?Cookie
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
$result = curl_exec($curl);
curl_close($curl);
?>

我在测试的时候主要是因为cookie没有设置,因为总是想着这不是在客户端提交,记录Cookie也没有什么用,就删除了Cookie参数,试了好多次之后加上Cookie就成功了。

另外,QQ登录的时候会对你的IP进行检测,如果登录的IP地址不是经常登录的IP地址,则需要输入验证码,此时上面的模拟登录就不能用了,jucelin也没想到什么好的方式解决。不过,可以手动尝试在http://pt5.3g.qq.com/上登录,多登录几次,验证码就不会再有了,当然这里的几次不是登录就退出再登录再退出那么简单,估计至少时间跨度要大点,登录2-3次基本上就OK了。

其实使用SID登录也是一种模拟QQ登录的方式,SID码来自于登录后的URL中,每次登录都会分配唯一的SID码,这也是3gqq全站登录的方式,因为要考虑有的手机不支持Cookie(这里突然想到腾讯要是使用session,会是什么样的状况),但又要实现全站登录的需求。

OK,通过SID码登录就不多说了,相信聪明的你肯定能想到。 :lol:

PHP模拟QQ登录

因为这个程序一个多星期之前就写了,就进行了一些拓展,感兴趣的可以看看我写的这个实例:QQ挂机宝(好吧,我承认这个名字取得由点鸟,但我确实没想到啥名,凑合着叫叫吧)。这个实例主要重点放在了功能实现上,所有什么安全措施,什么用户体验,什么程序运行效率都没去弄,,所以…你懂的,如果你发现功能上不对的地方记得给我留言。

如果你有更好的思路或者更深的想法,欢迎交流,例如用来发QQ消息,发微博什么的,虽然上面2项都测试成功了。

本文固定链接: https://jucelin.com/php-crul-for-qq-login.html | Jucelin

该日志由 jucelin 于2011年11月26日发表在 后台开发, 实验室 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: PHP模拟QQ登录 | Jucelin
关键字: , , , , , ,

PHP模拟QQ登录:目前有47 条留言

  1. 13楼
    大超超:

    不错不错,喜欢DIYPHP的撸过~
    已分享,下午要考试,所以现在没时间弄- -!

    2013-01-09 12:55
  2. :lol: 楼主也是个爱折腾的家伙哦。

    2012-09-25 20:54
  3. 11楼
    惊喜的夜:

    :!: :?: :razz:

    2012-08-27 10:08
  4. 10楼
    PanFake:

    我试了上面的代码,并修改了post地址,在本地测试的时候成功,但一挪到vps上就不行了,因为这段代码没提供具体的错误信息,我也没法判断。另外,能否把做好的这个php源码发给我,我想学习下……谢谢了

    2012-04-05 18:21
    • jucelin:

      上面就是那个做好的代码哦,呵呵。你的VPS肯定没有开启CURL。看下php的环境就知道了。

      2012-04-05 20:01
      • PanFake:

        呵呵 开启了,除了curl还需要其他的什么组件么?

        2012-04-05 20:13
        • jucelin:

          不需要了。另外失败的原因也有可能是你的VPS没有挂过你的QQ,当你登录QQ的时候被认为是可疑的登录,此时需要输入验证码,所以也会造成登录失败的。

          2012-04-05 20:19
          • PanFake:

            我怀疑是这个问题- -怎么解决…
            命令行真心很难操控啊……

            2012-04-05 20:20
            • jucelin:

              可以找找其他的登录方式,别人解决了,我也没时间去捣腾这个,所以就没找了,如果找到也可以告诉我下,呵呵

              2012-04-05 20:23
  5. 不是太懂这个。

    2012-03-13 10:44
  6. 8楼
    宇博:

    介个是非常不错滴,QQ啥时候能开放TCP协议就更牛啦,哈哈!

    2012-02-10 21:38
    • jucelin:

      虽然可能行不大,但大家都期待。呵呵

      2012-02-11 10:02
  7. 7楼
    wotry:

    很酷!可惜对php一窍不通,复制你代码测试没有成功,本地测试的。
    什么时候写一个用sid登录的文章,让我们也瞻仰瞻仰。

    2012-01-17 01:16
    • jucelin:

      我用的是curl提交的,需要php支持curl哦

      2012-01-17 13:42
      • wotry:

        对啊,我开启了curl,测试没有成功!

        2012-01-17 20:44
        • jucelin:

          ‘login_url’变了应该,试试这个http://pt5.3g.qq.com/s?sid=ARrEODNsERTlzOveB4RlEN9t&aid=nLogin

          2012-01-17 21:45
          • wotry:

            是变了,修改后还是不能登录,还有就是curl_init这个函数中的url是什么意思?是表单中action的数据吗?如果换的花,后边sid是随机的。

            2012-01-18 12:37
            • jucelin:

              这个看官方的文档应该比较清楚,我也是初学者,呵呵http://cn.php.net/curl。

              2012-01-18 16:28
              • wotry:

                不是,我说的是第二个网站是什么啊?

                2012-01-18 16:44
          • 查看登陆页面(http://pt5.3g.qq.com/)源码:
            form标签中action字段的sid每刷新一次,都变化一次;
            login_url字段直接http://pt.3g.qq.com/s?aid=nLogin 这个就行了;
            ‘loginsubmit’ => ‘login’值为login,任意值应该都行吧?因为已经执行了提交(经测试值为:0 可行 :lol: )

            2012-02-15 23:23
            • jucelin:

              嗯,是的。看来你是自己看过了。

              2012-02-16 17:42
              • 我觉得可以这样(关于聊天):
                定时刷新在线好友,之后获取3gQQ聊天窗口内容,检测左上角内容,如果有消息的话,会有类似:
                一个小企鹅头像(消息数)
                这样的内容,检测出来后,获取链接消息内容,之后在新页面,填写相关字段,借助curl模拟提交,模拟回复信息
                这样就可以实现,模拟自动回复信息了(比如模拟消息:该QQ正在使用挂机宝挂机)

                既然可以检测出消息,获取消息,可以把获取的消息根据发送消息好友 保存起来,这样就可以防止使用挂机报挂Q丢消息了

                利用自动回复和获取内容原理,还可以根据好友发送消息内容,写一个 自动服务,或者自动聊天机器人来( :lol: )

                2012-02-16 19:16
                • jucelin:

                  哈哈,你想到的几个功能我已经测试实现了,包括发说说,发微博等。不过话说实现归实现,不上线也是在犹豫:
                  1,因为这个是捡个漏洞写的,腾讯一个补丁就能搞定了;
                  2,原本这个程序是挂自己的小号使用的,所以才这里公布代码,后闲来没事才整理,写个页面公布的;
                  3,挂的基本上都是小号,挂的时间特意设定在凌晨1点以后,又本着不浪费服务器资源的精神,获取聊天记录的功能就价值不大了。
                  最初整理的时候是想写大点,包括挂机mail提示,消息mail提示等等,后来考虑的因素多了,就搁置了。

                  2012-02-16 19:45
                  • 注册一个免费QQ号,获取聊天记录内容,检测聊天记录内容,根据内容做出相应的处理(比如对服务器做的一些操作,像备份一些东西啦,清理一些东西啦,当然这些功能得事先写好)怎么样呢,这个免费QQ可以是自己的一个专属助理QQ,用自己常用的QQ加上助理QQ,可以简单,随时实地得,比如使用手机在课件,在公交车上,发送简单指令可以在服务器上做一些操作

                    2012-02-16 19:56
                  • 确实是借助腾讯的一个漏洞实现的,识别验证码没有试过,不知道效果怎么样,估计不太靠谱,验证码是网站的一道防机器人的有力防线,网站的安全人员肯定会有所考虑

                    2012-02-16 20:03
                    • jucelin:

                      我观察了下,他的验证码很多规则,不好程序破解,其实我也写不出来,呵呵

                      2012-02-16 23:27
              • 关于挂机宝,其实呢,我觉得既然保存SID,那么就可以进行一切操作了,跟保存用户QQ密码没什么区别 :shock:
                你觉得呢? :wink:
                不过,既然要挂机嘛,肯定得输入一些密码之类的登陆信息,尽量做好安全措施吧!
                提醒用户设置密码保护比较好

                2012-02-16 19:48
                • jucelin:

                  SID确实是类似于密码之类的,但无法修改密码和密保,所以我在挂机宝中只保存了SID。好多人挂的都是无保QQ,让他设置密保,有点不太好,所以就提了下而已。

                  2012-02-16 23:21
        • 直接echo $result; 一切都了然了

          2012-02-15 23:17
          • jucelin:

            不输出,主要是为了防止拿来主义者。很多人都会直接复制代码然后调试,结果什么也没输出,就会认为代码不行,正好我就是不想让这样的人用,呵呵

            2012-02-16 17:45
  8. 6楼
    h3lpless:

    回访,~~博主继续加油~~

    2011-12-16 14:33
  9. 5楼
    亨sir:

    哈哈,技术不错,只是啊,不该用在QQ上
    我的重点是说,QQ只是能用来交流就可以了
    哈哈
    好文
    貌似也很忙,也没更新

    2011-11-28 23:00
    • jucelin:

      哈哈,大公司的产品比较有吸引力,换句话说实际上也是在找一种成就感,也没恶意。
      这几天几个客户要网站,就没更新了。发现现在写代码真的很慢。

      2011-11-29 09:32
  10. 4楼
    云刊:

    自己写程序为qq挂机,厉害啊,不用担心那些黑心的挂机站了

    2011-11-27 19:57
    • jucelin:

      的确,有了密码什么都能干的 :lol:

      2011-11-27 22:00
  11. 地板
    陌凡:

    我靠,太强大了 :twisted:

    2011-11-26 23:53
  12. 板凳
    象牙塔:

    好东西啊,我也试试!

    2011-11-26 17:26
    • jucelin:

      有结果吗?

      2011-11-27 00:41
      • 不知道咋回事 早上起来肚子难受… 好点了再折腾..

        2011-11-27 08:55
        • jucelin:

          早上起来我也折腾了下,结果发现有个sql写错了。。。呵呵

          2011-11-27 22:42
    • 我也是模拟登录时遇到的验证码处理不了、、、

      2012-06-14 17:25
  13. 沙发
    心淡若水:

    这个还能模拟登陆?
    我XX 科技果然让人进步啊

    2011-11-26 16:03

发表评论

您必须 [ 登录 ] 才能发表留言!

更多