腾讯微博模拟登录

最近比较懒,都不想写东西,嘛,良心发现还是写点什么好了。总之工作原因,需要弄这个,只能说企鹅娘的程序员都是折翼的天使啊,把我这种渣渣折腾死了。

首先在输入账户的输入框中输完帐号后,页面的js就会向

"http://check.ptlogin2.qq.com/check?regmaster=&uin=".$user."&appid=46000101&js_ver=10031&js_type=1&login_sig=".$sig."&u1=http%3A%2F%2Ft.qq.com&r=0.5318469845290044"
$user:帐号的值; $sig:在打开登录页面时,页面会产生一个“login_sig”的值。其他值随意

这个网址查询这个帐号是否需要输入验证码,返回值如下

ptui_checkVC('1','0f90f8176492579603d5f5b4df231f51d9fc9191f0c9e538','x00x00x00x00x4fx47x63xf7');

1的话,就是要验证码,所以我会默默的换个帐号再试(渣渣的忧桑啊)。

ptui_checkVC('0','!GJP','x00x00x00x00x1ax74xecx47');

这是另一种啦,不用验证码的。

由返回的2个值与密码进行运算,得到一个变化的password(就是下面那个网址的$p),

<?php 
  //$uin='!GJP' $v='x00.......x47'
function getp($password,$uin,$v){ $str=md5($password); $arr=array(); $str=strtoupper($str); $str_length=strlen($str); for ($i=0;$i<$str_length;$i=$i+2){ array_push($arr,"\x".substr($str,$i,2)); } $arr=implode("",$arr); eval("$arr="$arr";"); eval("$uin="$uin";"); // echo $arr; $str=strtoupper(md5($arr.$uin)); // echo $str; $str=strtoupper(md5($str.$v)); // echo $str; return $str; } ?>

然后向这个网址发送下请求

$url="http://ptlogin2.qq.com/login?u=".$user."&p=".$p."&verifycode=".$uin."&aid=46000101&u1=http%3A%2F%2Ft.qq.com&h=1&ptredirect=1&ptlang=2052&from_ui=1&dumy=&low_login_enable=1&low_login_hour=720&regmaster=&fp=loginerroralert&action=3-21-1370762999815&mibao_css=&t=1&g=1&js_ver=10031&js_type=1&login_sig=".$sig;

根据返回值的判断是否成功吧,额,cookie就不多说了,反正挺重要的。

用curl弄个cookie保存,以后就直接用保存好的cookie就能直接登录了

原文地址:https://www.cnblogs.com/cangzhou/p/3154756.html