登陆过程
分析方法
- 使用HTTP抓包工具获取微博登陆过程的HTTP包数据;
- 分析主要的登录页面的 请求头,响应头,post参数信息;
- 分析登录过程中利用的加载的js信息;
抓包可能有很多图片信息,直接过滤。
重点关注带有login先关字段的URL
重点关注如下区域的信息
这里我就直接上登录分析结果。
第一步
GET访问 :https://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=&rsakt=mod&client=ssologin.js(v1.4.18)&_=1479274345685
其中su
指代用户名【经过BASE64编码后】
抓包数据:
访问成功
访问结果:
sinaSSOController.preloginCallBack({"retcode":0,"servertime":1479274346,"pcid":"ja-3e2faa2906000fb601eb32268497ee26f018","nonce":"LQNTRW","pubkey":"EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443","rsakv":"1330428213","uid":"6041902159","exectime":8})
格式化后:
重点信息 Name Type Value
否 retcode object 0
是 servertime object 1479274346
pcid object "ja-3e2faa2906000fb601eb32268497ee26f018"
是 nonce object "LQNTRW"
是 pubkey object "EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443"
否 rsakv object "1330428213"
否 uid object "6041902159"
否 exectime object 8
是 pinCode
访问失败
请求失败则获取不到重要的登录信息,想办法解决。
第二步
POST访问: http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)
抓包数据:
需要准备POST的参数:
是否固定 参数名 参数值
是 entry weibo
是 gateway 1
是 from
是 savestate 7
是 useticket 1
是 pagerefer
是 vsnf 1
否 su MTcxODQ1MDM0Njg=
是 service miniblog
否 servertime 1479274381
否 nonce QC24GW
是 pwencode rsa2
否 rsakv 1330428213
否 sp 168c045a164d28bbf5c516721448b9d560ad0acece2fd61c08712742da0764a1ca7150bf0094c8e380eef42f493ba783e1d610c6564a3445783b14cdf957ec620f07ba083c5d5560b366203930cb187cd207d99e39e8a5c3c2b8baf3f731dbbe9b985798b5214b9b3a2abaf0c636a53b7e5878124055bfdfbc3910b43395d7b3
是 sr 1024*820
是 encoding UTF-8
是 prelt 190
是 url http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack
是 returntype META
可选参数:
是 door 验证码的值[只有需要验证码的时候需要]
注意:返回的参数是否固定,可以通过多次登录微博,查看参数是否变化。
POST参数来源:
参数 来源
su 用户名base64编码
servertime 前次访问获得
nonce 前次访问获得
rsakv 前次访问获得
sp 密码经过rsa加密所得
访问成功
成功返回:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>新浪通行证</title>
<script charset="utf-8" src="http://i.sso.sina.com.cn/js/ssologin.js"></script>
</head>
<body>
正在登录 ...
<script>
try{sinaSSOController.setCrossDomainUrlList({"retcode":0,"arrURL":["http:\/\/passport.97973.com\/sso\/crossdomain?action=login&savestate=1510810372","http:\/\/passport.weibo.cn\/sso\/crossdomain?action=login&savestate=1"]});}
catch(e){
var msg = e.message;
var img = new Image();
var type = 1;
img.src = 'http://login.sina.com.cn/sso/debuglog?msg=' + msg +'&type=' + type;
}try{sinaSSOController.crossDomainAction('login',function(){location.replace('http://passport.weibo.com/wbsso/login?ssosavestate=1510810372&url=http%3A%2F%2Fweibo.com%2Fajaxlogin.php%3Fframelogin%3D1%26callback%3Dparent.sinaSSOController.feedBackUrlCallBack%26sudaref%3Dweibo.com&ticket=ST-NjAyMzIwMzgxMg==-1479274372-ja-FDEC9B35BBE7FD284B9E4FBB1D53F68A&retcode=0');});}
catch(e){
var msg = e.message;
var img = new Image();
var type = 2;
img.src = 'http://login.sina.com.cn/sso/debuglog?msg=' + msg +'&type=' + type;
}
</script>
</body>
</html>
重要信息:
跨域请求: http://passport.weibo.com/wbsso/login?ssosavestate=1510810372&url=http%3A%2F%2Fweibo.com%2Fajaxlogin.php%3Fframelogin%3D1%26callback%3Dparent.sinaSSOController.feedBackUrlCallBack%26sudaref%3Dweibo.com&ticket=ST-NjAyMzIwMzgxMg==-1479274372-ja-FDEC9B35BBE7FD284B9E4FBB1D53F68A&retcode=0
访问失败
自行处理。
第三步
请求跨域URL http://passport.weibo.com/wbsso/login?ssosavestate=1510810372&url=http%3A%2F%2Fweibo.com%2Fajaxlogin.php%3Fframelogin%3D1%26callback%3Dparent.sinaSSOController.feedBackUrlCallBack%26sudaref%3Dweibo.com&ticket=ST-NjAyMzIwMzgxMg==-1479274372-ja-FDEC9B35BBE7FD284B9E4FBB1D53F68A&retcode=0
访问该url,会重定向到:http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&sudaref=weibo.com
成功请求
最终返回:
<html><head><script language='javascript'>parent.sinaSSOController.feedBackUrlCallBack({"result":true,"userinfo":{"uniqueid":"6023203812","userid":null,"displayname":null,"userdomain":"?wvr=5&lf=reg"}});</script></head><body></body></html>
重要信息:
- result: 返回登陆是否成功信息
- userinfo:返回用户信息
- userdomain:返回用户的主页【反问用户主页一般会有重定向】
请求失败
关于用户主页
使用HttpClient,设置自动重定向,不需要关心本段。
请求个人主页:
登陆成功后,访问http://weibo.com/?wvr=5&lf=reg
返回重定向:
- 一种情况:
/username/home?wvr=5&lf=reg
- 还有一种情况:
/u/6023203812/home?wvr=5&lf=reg
情况一
访问重定向地址:http://weibo.com/username/home?wvr=5&lf=reg
继续重定向:http://weibo.com/nguide/interest
继续重定向:http://weibo.com/nguide/interests
最后重定向到:http://weibo.com/hgfdodo/home
此时访问成功。
情况二
不需要再次重定向,访问 http://weibo.com/u/6023203812/home?wvr=5&lf=reg
其中6023203812
和?wvr=5&lf=reg
都是userinfo信息中获取的。