标签:注意 oca eset img container shadow 模拟登录 大量 mod
登陆主要分为两种方式:selenium+chrome以及模拟登陆
首先预登录,一般会在输入账号以后会触发此请求,也可能会在点击登录后触发
主要参数:
其中su为账号的base64加密,_为当前时间戳,其他参数为固定值
返回值:返回值分两种情况,一种有验证码,一种无验证码,当需要输入验证码时会返回pcid字段,不需要输入时不会返回,结果如下图
有用的几个参数为servertime,nonce,pubkey,rsakv,pcid(如果有)。
接下来为获取验证码,验证码链接为:"https://login.sina.com.cn/cgi/pin.php?r=86006630&s=0&p="+pcid,参数r随意,p为pcid,请求时请求头加上UA和refere,返回验证码后代用打码平台来识别验证码
最后开始重头戏,密码加密部分,首先输入账号和密码登录一次,点击登录之前先打开浏览器控制台清空所有请求,接下来观察登录过程所出发的请求
很明显,第二个请求为登录触发的js,把鼠标放在Initiator对应的位置就会出现这个 JS文件包含的方法和对应的路径,请求表单里面包含的参数su、nonce、rsakv与上面提到的是一致的(我的不一致时因为我两次登陆使用的不是同一个账号),sp为rsa加密后的结果,然后去sources里面找到对应路径下面的js文件,在里面搜一下这几个参数。
784行这里这几个参数都出现了,而且782行是用户名的base64加密,在这里打上断点,一步步调试提取出加密js,调试的过程比较繁琐,需要耐心;还有个比较快的方法是直接用这个js文件,使用里面的sinaSSOEncoder对象进行加密,不过最后在代码中执行js文件时还是要吧里面一些没用的东西删除掉比如windows,alert等,785-790行为加密需要的一些参数,都是预登录得到的,需要注意的是servertime也是预登录返回的servertime不是当前时间,第791行的b就是加密后得到的结果,即第二步请求sp参数。
至此,所有登录需要的参数都已经得到了,带上所有参数请求(post)这个链接https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.19)获取返回的cookie就能直接登录了。
登录代码git地址:https://github.com/JetLei/MblogLoginDemo。
下一篇将是微博百万数据采集架构的流程分享。
标签:注意 oca eset img container shadow 模拟登录 大量 mod
原文地址:https://www.cnblogs.com/IronManPlus/p/12010202.html