免责声明:
大家请以学习为目的使用本仓库
本仓库的所有内容仅供学习和参考之用,禁止用于商业用途。任何人或组织不得将本仓库的内容用于非法用途或侵犯他人合法权益。本仓库所涉及的技术仅用于学习和研究,不得用于对其他平台进行非法行为。对于因使用本仓库内容而引起的任何法律责任,本仓库不承担任何责任。使用本仓库的内容即表示您同意本免责声明的所有条款和条件。
点击查看更为详细的免责声明。点击跳转
仓库描述
小红书,抖音, 快手, B站, 微博…。
目前能拾取小红书、抖音、快手、B站、微博的视频、图片、评论、点赞、转发等信息。
原理:利用playwright搭桥,保留登录成功后的上下文浏览器环境,通过执行JS表达式获取一些加密参数 通过使用此方式,免去了复现核心加密JS代码,逆向难度大大降低
功能列表
平台 | Cookie 登录 | 二维码登录 | 手机号登录 | 关键词搜索 | 指定视频/帖子 ID | 登录状态缓存 | 数据保存 | IP 代理池 | 滑块验证码 |
---|---|---|---|---|---|---|---|---|---|
小红书 | ✕ | ||||||||
抖音 | |||||||||
快手 | ✕ | ✕ | |||||||
B 站 | ✕ | ✕ | |||||||
微博 | ✕ | ✕ |
使用方法
创建并激活 python 虚拟环境
# 进入项目根目录
cd MediaCrawler
# 创建虚拟环境
# 注意python 版本需要3.7 - 3.9
python -m venv venv
# macos & linux 激活虚拟环境
source venv/bin/activate
# windows 激活虚拟环境
venv\Scripts\activate
安装依赖库
pip3 install -r requirements.txt
安装 playwright浏览器驱动
运行程序
# 从配置文件中读取关键词搜索相关帖子的信息与评论
python main.py --platform xhs --lt qrcode --type search
# 从配置文件中读取指定的帖子ID列表获取指定帖子的信息与评论信息
python main.py --platform xhs --lt qrcode --type detail
# 打开对应APP扫二维码登录
# 其他平台使用示例,执行下面的命令查看
python main.py --help
数据保存
- 支持保存到关系型数据库(Mysql、PgSQL等)
- 支持保存到csv中(data/目录下)
- 支持保存到json中(data/目录下)
常见程序运行出错问题
Q:抖音报错:
A: 该错误为缺少 nodejs 环境,这个错误可以通过安装 nodejs 环境来解决,版本为:execjs._exceptions.ProgramError: SyntaxError: 缺少 ';'
v16.8.0
Q: 使用抖音Cookie报错: execjs._exceptions.ProgramError:TypeError:无法读取 null 的属性“JS_MD5_NO_COMMON_JS” A: windows电脑去网站下载 Windows 64-bit Installer 版本,一直下一步即可。https://nodejs.org/en/blog/release/v16.8.0
Q: 可以指定关键词吗?
A: 在config/base_config.py 中 KEYWORDS 参数用于控制需要的关键词
Q: 可以指定帖子吗?
A:在config/base_config.py 中 XHS_SPECIFIED_ID_LIST 参数用于控制需要指定的帖子ID列表
Q: 刚开始能用,过一段时间就是失效了?
A:出现这种情况多半是由于你的账号触发了平台风控机制了,请勿大规模对平台进行影响。
Q: 如何更换登录账号?
A:删除项目根目录下的 brower_data/ 文件夹即可
Q: 报错
A: 出现这种情况检查下开梯子没有playwright._impl._api_types.TimeoutError: Timeout 30000ms exceeded.
关于手机号+验证码登录的说明
当在浏览器模拟人为发起手机号登录请求时,使用短信转发软件将验证码发送回填,完成自动登录
准备工作:
- 安卓机1台(IOS没去研究,理论上监控短信也是可行的)
- 安装短信转发软件 参考仓库
- 转发软件中配置WEBHOOK相关的信息,主要分为 消息模板(请查看本项目中的recv_sms_notification.py)、一个能push短信通知的API地址
- push的API地址一般是需要绑定一个域名的(当然也可以是内网的IP地址),我用的是内网穿透方式,会有一个免费的域名绑定到内网的web server,内网穿透工具 ngrok
- 安装redis并设置一个密码 redis安装
- 执行
python recv_sms_notification.py
等待短信转发器发送HTTP通知 - 执行手机号登录的程序
python main.py --platform xhs --lt phone
备注:
- 小红书这边一个手机号一天只能发10条短信(悠着点),目前在发验证码时还未触发滑块验证,估计多了之后也会有~
- 短信转发软件会不会监控自己手机上其他短信内容?(理论上应该不会,因为短信转发仓库 star还是蛮多的)