无痕模式
在网页上执行一遍登录操作
微博登录过程
抓取到登录过程后,我们就可以开始分析了,记住一定要清理缓存。我有好几次抓取都不一样,后来换了Safari浏览器(因为我很少用这个),其实这一步用什么浏览器都无所谓,chrome浏览器主要是用来调试JS用的。
过程分析
查找登录请求
登录一般url里面应该都会有login,而且是post请求,当然不排除其他方式。
https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.19)
登录请求url
找到登录请求后,这里主要关注Form表单信息,参数很多,我们需要先大概区分一下哪些可能是固定参数,哪些是变化的参数。
参数确定
一目了然可以看到那些是固定的了吧,这些所有的参数其实我们都是可以追根溯源的,但是没那个必要,在这种参数比较多的情况下,太费事了,可以采用多次抓取登录过程,对比请求参数的方式确定部分固定的或者不重要的参数,那么需要我们通过其他方式获取的参数有pcid、door、su、servertime、nonce、rsakv、sp、prelt,这里servertime比较有争议,一般看到这种time或者151开头的10位或者13位数字,都是时间戳,用time.time()获取就可以,但是这里是servertime,我们应该引起注意。
参数分析
下面我们一一来看这几个参数怎么获取
- su
- 我们要先说一下这个su,因为其他的参数都和它有关系。这个su在js调试的时候可以看到它的算法,但是其实我们可以根据它的特点先猜测一下,有可能是base64加密的。为什么?
Base64是一种基于64个可打印字符来表示二进制数据的方法,哪64个字符呢? A-Z、a-z、0-9和" "、"/",很多时候base64加密的字符串尾部为 1个或2个 "=", 因为它是把3个字节的二进制拼接,如果最后剩下一个,那么尾部就会添加2个=, 如果剩下两个,尾部就添加1个=,如果刚合适那当然就没有=了
推荐一个工具网站https://tool.lu/encdec/