登陆过程 顶 原

登陆过程

分析方法

  1. 使用HTTP抓包工具获取微博登陆过程的HTTP包数据;
  2. 分析主要的登录页面的 请求头,响应头,post参数信息;
  3. 分析登录过程中利用的加载的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信息中获取的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章