在微博上看到网友使用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码登录就不多说了,相信聪明的你肯定能想到。 😆
因为这个程序一个多星期之前就写了,就进行了一些拓展,感兴趣的可以看看我写的这个实例:QQ挂机宝(好吧,我承认这个名字取得由点鸟,但我确实没想到啥名,凑合着叫叫吧)。这个实例主要重点放在了功能实现上,所有什么安全措施,什么用户体验,什么程序运行效率都没去弄,,所以…你懂的,如果你发现功能上不对的地方记得给我留言。
如果你有更好的思路或者更深的想法,欢迎交流,例如用来发QQ消息,发微博什么的,虽然上面2项都测试成功了。
不错不错,喜欢DIYPHP的撸过~
已分享,下午要考试,所以现在没时间弄- -!
😆 楼主也是个爱折腾的家伙哦。
❗ ❓ 😛
Pingback引用通告: 升级在线挂QQ系统-QQ挂机宝 | Jucelin
我试了上面的代码,并修改了post地址,在本地测试的时候成功,但一挪到vps上就不行了,因为这段代码没提供具体的错误信息,我也没法判断。另外,能否把做好的这个php源码发给我,我想学习下……谢谢了
上面就是那个做好的代码哦,呵呵。你的VPS肯定没有开启CURL。看下php的环境就知道了。
呵呵 开启了,除了curl还需要其他的什么组件么?
不需要了。另外失败的原因也有可能是你的VPS没有挂过你的QQ,当你登录QQ的时候被认为是可疑的登录,此时需要输入验证码,所以也会造成登录失败的。
我怀疑是这个问题- -怎么解决…
命令行真心很难操控啊……
可以找找其他的登录方式,别人解决了,我也没时间去捣腾这个,所以就没找了,如果找到也可以告诉我下,呵呵
不是太懂这个。
介个是非常不错滴,QQ啥时候能开放TCP协议就更牛啦,哈哈!
虽然可能行不大,但大家都期待。呵呵
很酷!可惜对php一窍不通,复制你代码测试没有成功,本地测试的。
什么时候写一个用sid登录的文章,让我们也瞻仰瞻仰。
我用的是curl提交的,需要php支持curl哦
对啊,我开启了curl,测试没有成功!
‘login_url’变了应该,试试这个http://pt5.3g.qq.com/s?sid=ARrEODNsERTlzOveB4RlEN9t&aid=nLogin
是变了,修改后还是不能登录,还有就是curl_init这个函数中的url是什么意思?是表单中action的数据吗?如果换的花,后边sid是随机的。
这个看官方的文档应该比较清楚,我也是初学者,呵呵http://cn.php.net/curl。
不是,我说的是第二个网站是什么啊?
查看登陆页面(http://pt5.3g.qq.com/)源码:
form标签中action字段的sid每刷新一次,都变化一次;
login_url字段直接http://pt.3g.qq.com/s?aid=nLogin 这个就行了;
‘loginsubmit’ => ‘login’值为login,任意值应该都行吧?因为已经执行了提交(经测试值为:0 可行 😆 )
嗯,是的。看来你是自己看过了。
我觉得可以这样(关于聊天):
定时刷新在线好友,之后获取3gQQ聊天窗口内容,检测左上角内容,如果有消息的话,会有类似:
一个小企鹅头像(消息数)
这样的内容,检测出来后,获取链接消息内容,之后在新页面,填写相关字段,借助curl模拟提交,模拟回复信息
这样就可以实现,模拟自动回复信息了(比如模拟消息:该QQ正在使用挂机宝挂机)
既然可以检测出消息,获取消息,可以把获取的消息根据发送消息好友 保存起来,这样就可以防止使用挂机报挂Q丢消息了
利用自动回复和获取内容原理,还可以根据好友发送消息内容,写一个 自动服务,或者自动聊天机器人来( 😆 )
哈哈,你想到的几个功能我已经测试实现了,包括发说说,发微博等。不过话说实现归实现,不上线也是在犹豫:
1,因为这个是捡个漏洞写的,腾讯一个补丁就能搞定了;
2,原本这个程序是挂自己的小号使用的,所以才这里公布代码,后闲来没事才整理,写个页面公布的;
3,挂的基本上都是小号,挂的时间特意设定在凌晨1点以后,又本着不浪费服务器资源的精神,获取聊天记录的功能就价值不大了。
最初整理的时候是想写大点,包括挂机mail提示,消息mail提示等等,后来考虑的因素多了,就搁置了。
注册一个免费QQ号,获取聊天记录内容,检测聊天记录内容,根据内容做出相应的处理(比如对服务器做的一些操作,像备份一些东西啦,清理一些东西啦,当然这些功能得事先写好)怎么样呢,这个免费QQ可以是自己的一个专属助理QQ,用自己常用的QQ加上助理QQ,可以简单,随时实地得,比如使用手机在课件,在公交车上,发送简单指令可以在服务器上做一些操作
这个想法不错,哈哈,啥时候试试
有时间可以试试,哈哈!
确实是借助腾讯的一个漏洞实现的,识别验证码没有试过,不知道效果怎么样,估计不太靠谱,验证码是网站的一道防机器人的有力防线,网站的安全人员肯定会有所考虑
我观察了下,他的验证码很多规则,不好程序破解,其实我也写不出来,呵呵
关于挂机宝,其实呢,我觉得既然保存SID,那么就可以进行一切操作了,跟保存用户QQ密码没什么区别 😯
你觉得呢? 😉
不过,既然要挂机嘛,肯定得输入一些密码之类的登陆信息,尽量做好安全措施吧!
提醒用户设置密码保护比较好
SID确实是类似于密码之类的,但无法修改密码和密保,所以我在挂机宝中只保存了SID。好多人挂的都是无保QQ,让他设置密保,有点不太好,所以就提了下而已。
直接echo $result; 一切都了然了
不输出,主要是为了防止拿来主义者。很多人都会直接复制代码然后调试,结果什么也没输出,就会认为代码不行,正好我就是不想让这样的人用,呵呵
回访,~~博主继续加油~~
哈哈,技术不错,只是啊,不该用在QQ上
我的重点是说,QQ只是能用来交流就可以了
哈哈
好文
貌似也很忙,也没更新
哈哈,大公司的产品比较有吸引力,换句话说实际上也是在找一种成就感,也没恶意。
这几天几个客户要网站,就没更新了。发现现在写代码真的很慢。
自己写程序为qq挂机,厉害啊,不用担心那些黑心的挂机站了
的确,有了密码什么都能干的 😆
我靠,太强大了 😈
说的是PHP吧,哈哈
好东西啊,我也试试!
有结果吗?
不知道咋回事 早上起来肚子难受… 好点了再折腾..
早上起来我也折腾了下,结果发现有个sql写错了。。。呵呵
我也是模拟登录时遇到的验证码处理不了、、、
这个还能模拟登陆?
我XX 科技果然让人进步啊
这个真可以 😆