2021年11月新浪微博登录分析

先感叹一下,我2020年开始学习爬虫的时候,第二个模拟登录的网站就是微博,当时自己摸索,虽然网上有很多的文章,但还是决定自己弄出来。
初学,js、浏览器熟悉程度有限,经验也不足,一个简单的微博就把我支配得不要不要的,花了巨多的时间,参考网上文章,一路磕磕碰碰,才弄出来。虽然有点辛苦,但是解决问题之后的兴奋与成就感催动我继续研究js逆向。
后来,偶尔也玩过微博登录,发现无法绕过验证码了,近两年来,各家网站反爬越来越厉害,手机扫码、验证码越来越流行,网站接口隔三岔五更新,爬虫真是越来越难做了。
到了大三,准备找工作了,没了当时要干爬虫的想法,果断跑去卷Java后端了。
Java学习过程中,很多东西其实在爬虫中都有学习过、了解过,爬虫就是干着干着,有各种需求,然后去学习,本人认为这样学习效率是最高的。
所以,虽然没有把爬虫当成职业,但它是我对于这互联网整个行业的一个启蒙吧。
兴趣还是在的,偶尔玩一玩。小爬怡情,大爬伤身,强爬灰飞烟灭。。

下面进入正题,时隔一年多,新浪微博的加密已经是小菜了,但是本文的重点不在于此。
凭证初学的深刻印象,微博应该还是用的rsa加密,先抓波登陆包,因为我们要分析加密,所以选择账号密码登录。
强烈建议抓包之前把网站相关的任何cookie,localStorage删除干净,在chrome浏览器的设置中,删除所有与weibo.com相关的内容,我就是开始这点没做好,多花了大量时间,最好在浏览器设置中与开发工具的Application面板中检查一下

参数还不少,但是经过分析,需要解决的只有下面几个:

  • su
  • servertime
  • nonce
  • rsakv
  • sp
  • prelt

一个个来

su

如果有经验的,很容易猜测这是base64编码的串,应该是对用户名的,然后拿到里面一试,对的。

servertime、nonce、rsakv

这几个参数,都在prelogin那个请求的返回结果里

sp

这个应该就是密码了,怎么找到加密的位置呢,没法查看调用栈,只能用搜的了。
sp这个关键字不好搜,我们可以尝试搜rsa、encrypt等关键字。
运气很好,找到两个关键位置。
这个preloginTime其实就是prelt参数

这里是关键的加密位置,直接点进加密函数,整个扣出来

至此。所有参数倒是解决了,试一试能不能登录,返回结果如下

这就是接下来新浪系统的一堆跳转了,能有这个结果证明我们的加密分析是正确的,然后继续请求这个链接,发现他又返回了js代码,没法登录。

SUB && SUBP

当时在这里卡了好久,问题很明显,应该是cookie的问题,用正确的密码登录多次,发现这两个cookie值可能是登录不上的关键。

然后就开始找这两个cookie生成的逻辑,花了挺多时间登录、调试,最后发现就是访问微博,如果检测不到你的SUB、SUBP参数,会重定向到新浪访客系统,然后经历一系列跳转,为客户端生成SUB、SUBP两个cookie,并存储到本地,再返回到weibo.com。我们模拟登录,是没有这个生成SUB、SUBP的,再密码验证通过之后,跳转经过新浪访客系统,发现没有这两个参数,就会返回上面提到的又一段js代码,再经过跳转生成访客身份,设置SUB、SUBP参数,再跳转回微博登录,登录之后,将sina.com.cn的cookie转到weibo.com,具体来说,如下

def _cross_domain(self):"""默认cookie是.login.sina.com,转到.weibo.com:return:"""sub = self.session.cookies.get("SUB", domain=".sina.com.cn")subp = self.session.cookies.get("SUBP", domain=".sina.com.cn")self.session.cookies.clear(domain=".sina.com.cn", name="SUB", path="/")self.session.cookies.clear(domain=".sina.com.cn", name="SUBP", path="/")self.session.cookies.set("SUB", sub, domain=".weibo.com")self.session.cookies.set("SUBP", subp, domain=".weibo.com")
  • 如果浏览器事先的SUB、SUBP没有删除干净的话,登录过程中不会出现模拟登录中的js代码,没法排查问题
  • 如果事先删除了,在浏览器一打开weibo.com的时候,就会经过访客系统生成SUB、SUBP,如果不注意这个细节的话,这两个参数的来源就解决不了
  • 删除完cookie之后,打开调试工具,再刷新页面;或者全程用fiddler抓包,这两种方法可以抓到SUB、SUBP生成的过程

这两个参数解决,后续流程就比较简单了,但还是没法绕开验证码。

总结

  1. 注意到session对象cookie生成过程中,发现有一些是wei.com下的、一些是sina.com下的,再联系跳转过程中的crossDomainUrlList,可以猜到,新浪访客系统设置了cookie,才能继续访问微博。
  2. 需要分析cookie的网站,一定要记得删除cookie之后再抓包
  3. 浏览器不够用的时候,有些包的内容无法查看,使用中间拦截工具。

代码:Github

2021年11月新浪微博登录分析相关推荐

  1. 关于2021年11月28日PMI认证考试的报名通知

    尊敬的各位考生: 经PMI和中国国际人才交流基金会研究决定,中国大陆地区2021年全国第二期PMI认证考试于11月28日举办,相关事项通知如下. 一.时间安排和举办地区 (一)考试时间:2021年11 ...

  2. 2021年11月软考准考证打印时间及操作步骤

    摘要:2021年11月软考准考证打印时间及打印操作步骤,图文介绍. 2021下半年软考各省准考证打印时间已公布,一般是考前一周打印. 2021年11月软考准考证操作步骤: 第一步:打开中国计算机职业资 ...

  3. 抑郁症最新研究进展(2021年11月)

    ​​推荐阅读:<AD.hi v.癌症.新药.基因编辑.CAR-t等最新进展合集(每周更新)> 据估计,全球有3.5亿人受到抑郁症的折磨,目前我国有超过9500万抑郁症患者,这种疾病会严重影 ...

  4. 2021年11月23日对自己的一次鼓励

    2021年11月23日 author:陈镇坤27 创建时间:2021年11月23日15:23:31 ------------------------------ 学习犹如逆水行舟,不进则退 从今年7月 ...

  5. 2021年11月软考网络规划设计师下午真题及答案解析

    2021年11月软考网络规划设计师下午真题及答案解析 试题一 阅读以下说明,回答问题1至问答4,将解答填入答题纸对应得解答栏内. (说明) 某园区组网图如图1-1所示,该网络中接入交换机利用QinQ技 ...

  6. 2021年11月线上消费信贷市场用户洞察:头部效应明显,绿色金融成新风口

    根据易观千帆数据显示,2021年11月,中国线上消费信贷市场用户活跃人数达到5697万人.尽管消费需求的下降叠加部分消费场景趋严致使近半年来活跃人数走低,但环比看已出现回升迹象,从7月份的-7.7%恢 ...

  7. 2021年11月_IEEE Transactions on Geoscience and Remote Sensing_科技前言热点调查表

    IEEE Transactions on Geoscience and Remote Sensing文献跟踪 2021年11月 •  59卷 • 第11期 可视化分析: 文献名/代码开源/推荐 研究部 ...

  8. 日志2021年11月

    2021.11.2 1.CDD问题 车辆静止时纵向加速度传感器不为零,在程序中已添加偏移量96,但相同代码26日数据正常,27日有异常,需要后续跟进. 2.长安新能源测试报告 功能开,测试了AYC所有 ...

  9. 艾滋病/HIV最新研究成果进展(2021年11月)

    推荐阅读:<细胞治疗.基因编辑.生物制药等各领域最新研究进展消息合集> 根据中商产业研究统计数据,中国抗艾滋病治疗药物市场规模已从2013年的7.9亿元增至2018年的20.2亿元,预计2 ...

最新文章

  1. binutils工具集用法
  2. 浅析 Linux 初始化 init 系统
  3. docker中创建Jmeter及在外部使用JMeter-Server控制
  4. 《零基础看得懂的C语言入门教程 》——(八)了解基本数组还不是那么简单
  5. JAVA日期和时间API
  6. 两个子线程不冲突_多线程操作可见性
  7. 电大计算机理工英语19年秋季,国开电大理工英语1单元自测5形考任务答案
  8. atitit.避免NullPointerException 总结and 最佳实践 o99
  9. C语言实现黑客帝国 数字雨
  10. Windows Pygame 安装教程 (自己识别版本号并下载)
  11. 使用4G模块(EC200T)发送UDP数据到内网PC端(内网穿透)
  12. 帆软报表日期控件默认值为空
  13. 阿里巴巴电话面试(遭到了阿里的完虐,被一顿痛批)
  14. 注意:QQ空间加密并不安全
  15. python 正则表达式 compile_使用compile()函数编译正则表达式【Python技术文章】
  16. Redis 实例:开发一个Spring Redis应用程序
  17. 《商务与经济统计》(四)
  18. 如何区别同质化,实现差异化?
  19. linux上tftp上传文件失败,Linux下tftp上传文件失败的几条原因
  20. 「30天制作操作系统系列」1~4天从汇编到C语言

热门文章

  1. python 打印异常 - traceback.format_exc()
  2. 《密道跟踪》中国最强盗墓影片
  3. java的4种引用类型
  4. mhdd扫描的绿块解决说明与分析[转]
  5. 常用的计算机散热器有哪些,好用的笔记本散热器有哪些 笔记本散热器推荐【图文】...
  6. ubuntu服务器下载文件|aria2|百度网盘直链下载崩溃
  7. Win8 HTML5与JS编程学习笔记(一)
  8. 十大时尚高音质蓝牙耳机盘点,2020年末精品蓝牙耳机推荐
  9. 权健产品被各大电商平台全线下架 / 中国北斗系统开始服务全球 / 小米互联网洗衣机发布 | 雷锋早报... 1
  10. 汉字转拼音函数(sqlserver)