今天给大家带来的是新浪微博PC端的模拟登录。
工具
这次使用的工具是Charles和chrome浏览器。看过我之前文章的同学应该知道我用的Mac电脑。提琴手不能用。以前用虚拟机很麻烦。我很久以前安装了查尔斯,但我不知道如何使用它。后来发现了一篇更详细的文章,忘记记录了。发现Charles非常好用,它有一个非常好的功能,就是可以打开多个会话进行抓取和比较。这个功能很好,经常调试爬虫的人都会知道。我们捕获一个网站的登录过程,然后,在模拟的过程中,我们可以在另一个会话中捕获我们自己模拟的登录过程,然后比较我们请求发送的数据和浏览器请求发送的数据是否一致。在调试之前,我总是通过打印的方式来检查,一方面不方便,另一方面也不完整。所以强烈推荐你用查尔斯,网上有很多破解方法。
查理
打开它,查尔斯。您需要打开SSL代理爬行,这样您就可以获得HTTPS请求。毕竟,许多网站已经使用HTTPS请求。
HTTPS捕获设置
填写*表示所有URL都匹配。HTTP请求端口是端口80,HTTPS请求端口是端口443。设置好之后,就可以开始爬行了。
抓取请求
打开chrome浏览器,最好清除缓存,然后使用隐身模式访问https://weibo.com/.
打开隐形窗。
无痕模式
在网页上执行一次登录操作。
微博登录流程
抓到登录流程后,就可以开始分析了。记得清理缓存。几次抓取都不一样,后来换了Safari浏览器(因为很少用)。其实这一步我用什么浏览器都无所谓。chrome浏览器主要用于调试JS。
过程分析
查找请求
一般登录网址里应该有login,而且是post请求。当然也不排除其他方式。
https://login.sina.com.cn/sso/login.php?客户端= ssologin . js(1 . 4 . 19版)
登录请求url
找到登录请求后,这里是主表单信息,还有很多参数。我们需要先大致区分哪些可能是固定参数,哪些是变化参数。
参数确定
一眼就能看出那些参数是固定的。其实这些参数都是可以溯源的,只是没必要。当这样的参数很多的时候,就太麻烦了。可以多次抓取登录过程,对比请求参数,确定一些固定的或者不重要的参数。那么我们需要通过其他方式获得的参数是pcid、door、su、servertime、nonce、rsakv、sp、prelt。servertime在这里是有争议的。一般看到这种时间或者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/.
image.png
尝试使用编解码器,最后发现是账号,采用了url编码和base64编码,所以我们的su最后是
image.png
pcid、servertime、nonce、rsakv它的值时gz-48fb749c5c715e0d5caeed045716492e153c,我们先在Charles中搜索一下
pcid我们一般都是搜索response的数据,主要是看一下是不是在某一个请求的返回值里面,这里非常棒,我们找到了pcid和值出现的地方https://login.sina.com.cn/sso/prelogin.php?entry=weibo
以上就是由优质生活领域创作者 深圳生活网小编 整理编辑的,如果觉得有帮助欢迎收藏转发~
本文地址:https://www.szbubu.com/2735790.html,转载请说明来源于:深圳生活网
声明:本站部分文章来自网络,如无特殊说明或标注,均为本站原创发布。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。分享目的仅供大家学习与参考,不代表本站立场。