写在最前:这篇文字是描述的我的一个没有成功的代码,鉴于某些原因成功的代码就不公布了。能写出来的自然容易,100来行代码就可以搞定,而且由于手机QQ版本繁多,方法也是万千的。不管是截封包,还是逆向源代码,基本上都是可以取得一定收获的。对于这种问题,我一贯作风是只保证刚刚满足自己的需求即可,也懒得作深入探究。
鉴于最近TX的QQ升级规则最重要的一条改成了连续6小时手机QQ,而电脑加速则最多只有0.5天。我尚不清楚3GQQ算不算手机QQ,但是我实践中是不算的,然而登录记录上看属于手机QQ的,那么应该是我的每2小时更换一次登录IP的缘故吧。现在很容易的可以实现3GQQ,手机QQ似乎调试的时候遇到了一些问题。当然应该是腾讯版本比较繁多,其中一个版本遇到了问题,也就是我前面那篇文章提到的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $s = new socketc( "58.60.12.177" ,14000); while ( $row = mysql_fetch_array( $result )) { $s ->socket(); $r =rand(200,999); $var_msg = "VER=1.4&CON=1&CMD=Login&SEQ=" . $r . "UIN=" . $row [ 'qq_number' ]. "&PS=" . strtoupper (md5( $row [ 'qq_pw' ])). "&M5=1&LG=0&LC=812822641C978097&GD=5MWX2PF3FOVGTP6B&CKE=\r\n" ; echo $row [ 'qq_number' ]. "<br/>" ; $var_retu = ( $s ->sendmsg( $var_msg )) or die ( "Empty receive!\n" ); /*$s->sendmsg("VER=1.4&CON=1&CMD=Login&SEQ=112255&UIN=316926989&PS=61E9315B47B2851C910091FB5AF495C2&M5=1&LG=0&LC=812822641C978097&GD=5MWX2PF3FOVGTP6B&CKE=\r\n");*/ print_r( $var_retu ); $vars_retu = explode ( '&' , $var_retu ); if ( strpos ( $vars_retu [1], "VERIFYCODE" )) { $vars_vc = explode ( '=' , $vars_retu [7]); $vercode = @pack( "H*" , $vars_vc [1]); echo "<form action='ajax_mobile.php' method='post'>" ; echo "<img src='data:image/png;base64," . base64_encode ( $vercode ). "'/>" ; echo "<input type='hidden' name='_qqcode' value='" . $row ['qq_number ']."' > </input>"; echo "<input type='text' name='_vercode'></input><input type='submit' value='验证'></input><br/>" ; echo "</form>" ; } echo $var_msg . "<hr/>" ; $s ->close(); } |
嗯,这段代码是以52挂Q为蓝本的,本来我调试的时候已经写好了应答代码,只是不知道从什么时候开始好像突然被疼迅加入黑名单了,反正怎么调试疼迅的应答都是空的,我收到的都是空对象。但是奇葩的是我用的另一个代码就可以使用的。现在部署的是另一套手机QQ的代码,这里就不贴出来了。上面这个代码我本地在无法重现,也就懒得取消数据库依赖以及服务器部署测试了。(起初大约一两个小时都是可用的,可以看到验证码,然后我还尝试着训练我验证码识别库,可以突然就不可以了,也换过几个不同的IP,socket://58.60.12.177:14000,socket://211.136.236.88:14000,http://tqq.tencent.com:8000,http://mconn.tencent.com:14000,http://kconn.tencent.com:21001,我试验过前面两个,后面的懒得实验,因为我已经可以满足需求也没必要这么折腾)。