2025年小红书扫码登录分析与python实现_python脚本扫码登录小红书(1)

小红书扫码登录分析与python实现_python脚本扫码登录小红书(1)作者介绍 擅长爬虫与 JS 加密逆向分析 Python 领域优质创作者 CSDN 博客专家 阿里云博客专家 华为云享专家 一路走来长期坚守并致力于 Python 与爬虫领域研究与开发工作 作者推荐 对爬虫领域以及 JS 逆向分析感兴趣的朋友可以关注 爬虫 JS 逆向实战 深耕爬虫领域 未来作者会持续更新所用到

大家好,我是讯享网,很高兴认识大家。

【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与开发工作!
【🌟作者推荐】:对爬虫领域以及JS逆向分析感兴趣的朋友可以关注《爬虫JS逆向实战》《深耕爬虫领域》
未来作者会持续更新所用到、学到、看到的技术知识!包括但不限于:各类验证码突防、爬虫APP与JS逆向分析、RPA自动化、分布式爬虫、Python领域等相关文章

作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!

1. 写在前面

今天周末,抽时间更一下之前分析过的红薯扫码协议登录。思路反正是这么个思路,此类的应用场景很多。将登录后的CK给到爬虫采集使用,这样的一个闭环,在爬虫领域的圈子内基本很多工程师都用过。本期文章作者主要讲解分析过程与实现思路

2. 接口分析

首先打开Web端页面,会自动弹出一个二维码登录框,可以扫码并在手机点击确认登录。这里我们分析一下接口发包请求,如下所示:

在这里插入图片描述
讯享网

create这个即二维码生成接口,但是不同于其他网站,有固定的二维码URL,将码图片生成并存储在本地。接口也有一个登录的URL直链,码的话则是通过JS渲染生成的。当然有这个URL就够了,接口响应数据如下所示:

在这里插入图片描述

这里需要注意比较重要的三个字段,都将在后续使用上!qr_id、code你可以理解为二维码的标识,唯一且动态生成,即一码一ID!url登录链接,不是二维码链接!没有现成的二维码图或直链没有关系,我们可以使用Python生成二维码联动登录直链

一般扫码登录不知道大家有没有了解过,一张二维码创建出来后,一般是有一个服务会不断扫,扫什么?扫用户是否扫码、是否登录、码状态是否失效等等

所以这里也是一样,页面刷新生成二维码那一刻起,可以看到监测二维码状态一直在请求,直到二维码失效。这部分也是我们接下来需要构造实现的,如下所示:

在这里插入图片描述

这里的码状态监测请求频率在一秒钟扫一次,注意最好也保持在这个频率去构造监测二维码状态的请求

在这里插入图片描述

监测二维码状态的接口响应主要就是码是否被扫描了、是否确认登录了、登录是否成功了的一系列反馈。主要体现在code_status这个字段

0是二维码未被扫描、1是二维码已被扫描,但是待确认登录、2是登录成功、3则是码已经失效

3. 代码实现

流程实现主要涉及到两个接口,倒不是特别复杂。唯一需要分析与技术攻关的就是请求头内的x-s参数,这个是在生成二维码信息以及监测二维码状态请求中必须的一个参数,动态加密生成的

这个参数的话作者在很早之前就分别完成了补环境跟纯算分析还原,这里就不再复述。感兴趣的可以阅读之前的文章:x-s与x-s-common参数分析

在这里插入图片描述

扫码登录的话它只监测x-s,不用去管x-s-c这个参数,这个参数在请求的时候可以不携带!接下来我们先实现二维码创建,通过create接口生成二维码信息,代码实现如下:

# -\*- coding: utf-8 -\*- import execjs import qrcode import requests from PIL import Image from io import BytesIO def get\_xs(url, data): a1 = '' # 自行获取 with open("xsAndxscommon.js", encoding='utf-8') as f: ctx = execjs.compile(f.read()) res = ctx.call( "getXs", url, data, a1) return res def generate\_qrcode(): headers = { # 自动获取 } url = '' # 自动获取 api = "/api/sns/web/v1/login/qrcode/create" data = { "qr\_type": 1 } sign = get_signature(api, data) headers['x-s'] = sign['x-s'] data = json.dumps(data, separators=(',', ':')) json_data = self.session.post(url, headers=headers, data=data).json() code = json_data.get('code', -1) if code == 0: data = json_data.get('data', {}) if data: logger.log('INFOR', f'二维码生成完成!信息如下: {json\_data}') code = data.get('code', '') qr_id = data.get('qr\_id', '') loginurl = data.get('url', '') qr = qrcode.QRCode() qr.add_data(loginurl) img = qr.make_image() a = BytesIO() img.save(a, 'png') png = a.getvalue() a.close() t = showpng(png) t.start() login_status_monitor(code, qr_id) else: logger.log('ERROR', f'二维码生成出现异常: {json\_data}') 

讯享网

在创建生成二维码时,请求的cookie信息,是没有登录的,可以使用网站固定的即可!上面程序运行后会弹出一张二维码,等待扫描

另外可以看到代码中有一个方法login_status_monitor则是在生成码之后就需要调用的,模拟对码扫描状态的监测,这一部分的代码实现如下所示:

讯享网自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。 深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。 ![img](https://img-blog.csdnimg.cn/img_convert/2cbe7880a020dfa2d601af56.png) ![img](https://img-blog.csdnimg.cn/img_convert/8b0f1623b4748f47ff5ea3c4b0972d3b.png) ![img](https://img-blog.csdnimg.cn/img_convert/46506ae54be168b93cfca.png) ![img](https://img-blog.csdnimg.cn/img_convert/a671c1fb70aad5355a2c5eeff0.png) ![img](https://img-blog.csdnimg.cn/img_convert/6cfc05e862fe4e9.png) ![img](https://img-blog.csdnimg.cn/img_convert/9f49bf47b8a67243c1008edf79.png) 既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化! 由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新 如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python) 础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化! 由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新 如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python) <img src="https://img-community.csdnimg.cn/images/fd6ebf0d450a4dbeadc7ffd34.jpg" alt="img" style="zoom:50%;" /> 
小讯
上一篇 2025-03-28 13:45
下一篇 2025-02-17 12:20

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/69645.html