1.前言
从模拟登录这件事上,可以看出公司之间的技术水平,对安全的重视程度。之前做过豆瓣的模拟登录(链接),直接做一个post请求就OK,简直easy. 但是到新浪微博上,这个方法完全行不通,新浪微博简直了!!!各种加密,各种跳转,登录过程神烦!!!在参考了很多的博文,历经无数次失败之后,终于,我也成功登录上了!(●'◡'●)
2.登录过程分析
我一直用的是chrome浏览器,所以在开始做模拟登录的时候也是用chrome看登录过程,但是!并没有获得很多有用的信息,之后看网上很多推荐fiddler抓包,但是看着太乱了,也并没有真正去分析这个软件. 之后我转向了火狐,奇迹发现了,我看到了登录的全过程,网页的响应也很容易查看(chrome响应看不到的情况下也可以).因此,复杂的登录分析还是用火狐吧!
好,接下来就是见证奇迹的时刻,来看看登录到底经历了哪些过程:
首先,在输入用户名后,会进行预登录,网址为:http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=ZW5nbGFuZHNldSU0MDE2My5jb20%3D&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.18)&_=1443156845536,通过响应(sinaSSOController.preloginCallBack({"retcode":0,"servertime":1443156842,"pcid":"gz-e88b75a929252baec7c12c741985eaa45627","nonce":"2L4IZ3","pubkey":"EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443","rsakv":"1330428213","showpin":0,"exectime":16})),我们可以获得四个有用的变量,servertime、nonce、pubkey和rsakv.
新浪微博的用户名加密目前采用Base64加密算法,而新浪微博登录密码的加密算法使用RSA2,这是模拟登陆的重点,需要先创建一个rsa公钥,公钥的两个参数新浪微博都给了固定值,第一个参数是登录第一步