商务服务
MediaCrawler 小红书爬虫源码分析
2024-11-19 03:11

MediaCrawler 是最近冲上 Github 热搜的开源多社交平台爬虫。虽然现在已删库,但还好我眼疾手快,有幸还 Fork 了一份,乘着周末,简单分析了下小红书平台的相关代码。

MediaCrawler 小红书爬虫源码分析

一般写爬虫,都需要面对以下几个问题

  1. 如果 app/网页需要登录,如何获取登录态(cookie/jwt)
  2. 大部分 app/网页都会对请求参数进行 sign,如果有,如何获取 sign 逻辑
  3. 绕过其它遇到的反爬措施

我将带着这三个问题,阅读 MediaCrawler 小红书代码,看看 MediaCrawler 是怎么处理的。

提供了三种方式

  1. QRCode (login_by_qrcode)
  2. 手机号 (login_by_mobile)
  3. cookie (login_by_cookies)

登录相关代码都在 文件中

实现代码为 方法。代码为:

大致逻辑:

  1. 启动 headless 浏览器并且 headless 模式必须设为 , 因为不会把 QRCode 显示在终端或者通过信息转发服务转发到你的手机上
  2. 通过工具函数以及获取headless 浏览器所渲染页面中的 QRCode 图片元素
  3. 如果没有获取到,则点击 , 弹出登录对话框,然后再重复一次步骤2,如果依旧没有获取到,则退出爬虫,爬取失败。
  4. 如果获取到了,则等待用户扫码完成登录。
  5. 其中可能会出现验证码的情况,此时会提示需要手动验证,没有实现自动验证,需要人工手动操作干预。

实现代码为 方法。代码为:

大致逻辑:

  1. 启动 headless 浏览器
  2. 点击 , 弹出登录对话框
  3. 获取phone ,并填入手机号

  4. 点击, 发送验证码
  5. 每隔 1 秒从 Redis 数据库中获取验证码。如果 120 秒后,依旧没有获取到,则退出爬虫,爬取失败
  6. 如果获取到了,则将验证码,填入验证码输入框(),并勾选同意隐私协议按钮()以及提交按钮()
  7. 因为依赖了 Redis 数据库组件,所以可以通过短信转发软件或者短信获取接口实现短信验证码输入的自动化,实现自动化手机号登录

    1. 代码中没有检测验证码的正确性。
    2. 代码中没有登录失败重试机制

实现代码为 方法。就是将用户提供的 信息放到 中

小红书浏览器端接口有做验签,MediaCrawler 生成 相关参数的代码位于 文件中的 方法。代码如下:

  1. 没有逆向后用 Python 重新实现函数,而是通过 直接主动调用浏览器运行时中的 生成
  2. 通过 获取浏览器对象
  3. 将 中的 , 中的 , 中的 , 中的 , 作为参数传给 函数
  4. 函数最终返回签名后的值
  5. 将 赋值给

所以主要签名逻辑就是 函数,深入进去看下。代码位于 文件。代码如下:

  1. 这个函数没有像 方法一样,选择通过主动调用浏览器运行时中的相关方法,而是自己用 Python 实现。实现代码不再解释,就是逆向 JS 逻辑后,翻译成了 Python。
  2. 对于为何选择自己用 Python 实现而不主动调用浏览器中的 JS 方法,我也咨询了下作者,作者表示,这里的代码冗余了

MediaCrawler 小红书爬虫,也做了一些反反爬虫措施,代码位于 中的 函数。

  1. 通过注入脚本,来反headless 浏览器检测

  2. 通过添加 来防止出现 滑块

  3. 支持设置 ip 代理来更改 ip 地址

通过 库发起 http 请求,请求时带上以及 相关参数。请求是直接请求的 API, 所以没有任何 html 解析逻辑,当请求成功后,就会对数据进行一些处理,然后将数据入库。相关主要逻辑位于 以及 。由于比较简单,不再展开。

MediaCrawler 小红书爬虫是基于小红书浏览器端协议,实现了参数的获取,以及登录态的获取。参数的获取没有完全逆向 JS 逻辑并用 Python 实现,而是通过 主动调用了部分 JS 函数()。登录态的获取,也是基于 headless 浏览器实现,QRCode 登录需要人工操作;手机号登录可以通过短信转发软件或者短信接收接口实现自动化登录,但没有做验证码检验,验证失败重试。可以通过 来反 headless 浏览器检测。

    以上就是本篇文章【MediaCrawler 小红书爬虫源码分析】的全部内容了,欢迎阅览 ! 文章地址:http://keair.bhha.com.cn/news/1146.html 
     文章      相关文章      动态      同类文章      热门文章      栏目首页      网站地图      返回首页 康宝晨移动站 http://keair.bhha.com.cn/mobile/ , 查看更多   
最新文章
入境游订单同比增长123%!福州旅游市场迎“五一”预订高峰
“五一”假期临近,福州旅游市场迎来预订高峰。据携程数据显示,截至4月16日,“五一”假期福州酒店订单量同比去年增长12%,机
给近三年最好的10部刑侦剧排个名:《乌云之上》第8,《狂飙》第3
今年开年以来,国产剧算是和刑侦类型“杠”上了。刑侦剧一部接一部,几乎没有空窗期。要么是还原了曾经的真实悬案,要么是剧情高
北京11个上市基础设施公募REITs项目募集235亿元
  中新网北京4月1日电 (记者 吕少威)记者今天从北京市发改委获悉,北京市积极推进基础设施公募REITs工作,目前累计共有11个基
ipad怎么看运行内存苹果手机怎么看内存「ipad怎么看运行内存」
iPad查看运行内存教程在iPad上查看运行内存可以帮助你了解当前设备的使用情况,以及是否需要关闭一些应用程序以释放内存。以下是
兰州华为荣耀手机维修_华为手机维修西站店手机维修店「兰州华为荣耀手机维修_华为手机维修西站店」
搭载天玑1000+旗舰芯片,采用10亿色视网膜级超感屏,配备旗舰级5000万高清主摄等,诚意满满。今天我们小九主要来跟大家说说荣耀V40
十堰空调维修|十堰空调加氟|十堰空调维修电话0719-7017199
十堰空调维修中心【电话0719-7017199】主营:十堰空调维修,十堰空调加氟,服务好价格低,各区均有分点,专业十堰空调维修加氟人员随叫随到,欢迎咨询报修。
这群青年真提气!专注自己的事 就能干成事
  这群青年真提气!  4月15日,全球首个地月空间大尺度三星星座建成的消息公布。让人心头一热的,不只是117万公里星间链路打
斗破苍穹中丹塔未来三巨头会是谁?曹颖有望占据一席,宋清可捡漏
在斗破苍穹中,与魂殿齐名的丹塔,在斗气大陆上拥有非常高的地位,被所有炼药师视为圣地,有着无与伦比的号召力。丹塔外部的三位
手机的RAM和ROM分别指什么手机rom「手机的RAM和ROM分别指什么」
关于眼光和格局的诗句有:1、莫愁前路无知己,天下谁人不识君——唐代高适《别董大二首·其一》译文:不要担心前路茫茫没有知己
太阳能电磁阀嗡嗡响,太阳能上水时电磁阀一声巨响冒烟是怎么回事手机一直震动不停怎么回事「太阳能电磁阀嗡嗡响,太阳能上水时电磁阀一声巨响冒烟是怎么回事」
冒烟就很有可能是哪部分的短路烧坏了。可能是绝缘线也有可能是电磁阀的漆包线你说呢...为什么不要呢,太阳能真是太方便了。找到
相关文章