IDE 激活

夯爆了!66k+ Star 的开源神器,一键抓取小红书、抖音、B 站等多个平台公开数据

终码一生 · 2026-10-08

点击“终码一生”,关注,置顶公众号 每日技术干货,第一时间送达! 做爬虫的人都知道,签名是最难缠的一道关。 写代码本身不费劲,费劲的是接口参数被加密了。想直接调,得把平台前端逆向一遍,搞清楚签名算法。等好不容易搞明白了,平台一改算法,脚本全废。 小红书2023年那次风控收紧,接口成片返回461,多少脚本一夜之间停摆。 MediaCrawler走的是一条完全不同的路——它不去碰加密算法,而是让浏览器自己来算。 支持小红书、抖音、快手、B站、微博、贴吧、知乎,七个平台全覆盖。作者是独立开发者,2023年6月开源后持续更新,目前66k+ Star、1万多Fork。 01 它怎么绕过签名这道关 核心思路很简单:底层用Playwright,扫码登录后把登录态保存下来,所有需要签名的请求全部交给浏览器在登录状态下自己算。 签名是浏览器自己生成的,算法怎么改都拦不住——因为计算过程本来就发生在浏览器里,不是在模拟。 作者说这个思路不算他首创,但能做到装上就能用、还覆盖七个平台的,确实没几个。 中间还有段插曲:作者曾经把仓库删掉过,因为有人拿代码去卖钱。后来补了免责声明,重新开源。 02 它接管你正在用的那个Chrome 默认行为不是自己开浏览器,而是直接接管你平时在用的那个Chrome。 账号、Cookie、扩展、历史记录全是现成的。平台那边看到的,就是一个正常人在刷网页。 Chrome 136开始,远程调试不再提供HTTP接口了。程序改走WebSocket直连ws://localhost:9222,还需要在浏览器上手动点一下确认。 开跑之前,先进 chrome://inspect/#remote-debugging 勾上远程调试。 几个关键配置项: CDPCONNECTEXISTING:控制是接管现有浏览器还是另起一个实例 CDPDEBUGPORT:指定调试端口 ENABLECDPMODE设成False就回到标准Playwright模式,代价是需要额外执行uv run playwright install安装驱动 03 七个平台能采什么 七个平台的能力完全一致,README那张表每行都打满了勾,选哪个只看你的目标在哪里。 采集类型由--type参数决定: search:输入关键词,批量抓取搜索结果的笔记和视频 detail:针对已有目标,把帖子或视频的ID或完整URL填进列表,只取这几条 creator:盯住某个作者,填主页地址,把他发过的内容和数据一起打包拿走 每条记录能拿到标题、正文、点赞数、收藏数、评论。 登录方式有三种: 默认qrcode:用对应App扫码,登录态存本地,下次不用重扫 cookie:把Cookie直接填进配置 phone:门槛相当离谱,需要安卓机装短信转发软件、内网穿透域名、还得一个带密码的Redis。官方文档自己都写了不建议用 采集量大可以挂代理,内置快代理、豌豆HTTP和静态代理三种来源。 数据落地有八种选择:文件侧是CSV、Excel、JSON、JSONL;数据库侧除SQLite和MySQL外,还有PostgreSQL和MongoDB。默认落JSONL。 04 评论比正文更有价值,还能顺手出词云 很多时候评论区比正文信息量更大。 一级评论默认就采,单条上限默认10条。评论下面的回复(楼中楼)需要手动打开ENABLE_GET_SUB_COMMENTS,默认是关闭的。 采完的评论能直接生成词云,但有个前置条件容易踩坑:只有存成JSON或JSONL格式才会生成,落进数据库出不来图。ENABLE_GET_WORDCLOUD也得记得打开。 想更精准可以往CUSTOM_WORDS里塞词组,停用词表和字体也能替换。 05 封面和视频也能一起下载 数据之外,媒体文件也能一并拉下来,默认关闭。 命令行加--get_media true,或者打开ENABLE_GET_MEDIA。 落盘按内容聚合,路径格式是data/xhs/media/{帖子ID}/,封面是cover.jpg,视频是video.mp4,图文帖的多张图按001.jpg往下排。 小红书、抖音、快手、B站、微博五个平台支持,贴吧和知乎没有媒体字段。 B站那条线做得最细:装了ffmpeg就走DASH路径,音视频分轨下载再无损合流,能拿到最高画质;没装就降级成mp4直链。清晰度由BILI_QN控制,默认80对应1080p。 06 跑起来需要准备三样东西 第一样是uv:进项目目录跑一句,Python依赖就装完,作者用的是3.11版本。 第二样是Node.js:官方要求不低于16.0.0,爬抖音和知乎需要用到。 第三样是Chrome:要求144以上,装好后勾上远程调试。 uv run main.py--platform xhs --lt qrcode --type search 终端会出二维码,用对应App扫掉,登录态就留在本地了。 要改的东西都在config/base_config.py。 命令还有几种变体:--type detail按详情采,--specified_id只取指定条目,--get_media true连媒体一起拉。 命令行不是唯一入口。它还带了一个网页版:后端uvicorn起在8080,前端进webui装完依赖跑npm run dev起在5173,在浏览器里挑平台、填关键词、翻日志。要挂到后端上先执行npm run build。 懒得装的话,把仓库地址丢给AI编程助手代劳也行。 07 所有开关集中在一个文件 真正需要改的东西都在一个文件里,每一项都有中文注释。 命令行能覆盖的比想象中多,整个脚本二十来个参数,配置里几乎每一项都有对应的写法。 布尔值接受yes、true、t、y、1,也认no、false、f、n、0。 几个默认值值得先记住: 单次最多采15条内容 并发数为1 两次请求之间停2秒 最后那个数字,就是“频率放低”的官方实现方式。 另外两个不常提到的: XHS_INTERNATIONAL打开后走海外版小红书,接口域名和Cookie域一起切换 --init_db一次性建好PostgreSQL或MySQL的表 08 目录结构透露了它的抗改版能力 爬虫项目最怕的是平台一改版就整个塌掉。这个仓库的分层设计就是冲着这件事去的。 七个平台各占一个目录,文件形状几乎一样,各管自己那一摊。 再往外: store管存储 proxy管代理 cache分本地与Redis两套 tools放浏览器控制和滑块处理 libs里躺着三个JS文件:抖音和知乎各一个签名函数,还有一个stealth.min.js用来抹掉浏览器的自动化特征。 它说不碰加密,意思是把逆向结果收进这一层复用。 网页版不是套在命令行外面的壳子。webui是独立的React加TypeScript工程,环境检测、配置面板、运行终端、数据浏览各是一块。 09 开源版到此为止,Pro版另有东西 开源版缺什么作者没藏着:断点续爬和多账号写在付费版里。 Pro版不开源,走订阅制,多出来的是自媒体内容拆解Agent、多账号与IP代理池、完整Linux支持、一个视频下载器桌面端、多平台信息流推荐,还有给AI Agent用的Skill。架构上把Playwright依赖整个去掉,签名逻辑拆成独立服务。 10 有边界,也有风险 第一,账号有风控风险。 动手的是程序,频率一高,被盯上的是你登录的那个号。作者的做法是放慢节奏,只看公开内容,够了就收手,主力号别跑。 第二,协议有边界。 许可证叫NON-COMMERCIAL LEARNING LICENSE 1.1,中文名非商业学习使用许可证,只限非商业的学习与研究,禁止大规模爬取和干扰平台运营,商用需要先拿到版权人的书面同意。 第三,平台一直在变。 今天跑得通不代表三个月后还跑得通,登录态过期、接口改版都是日常。好在项目从2023年建库起一直有人维护,这个月还有推送。 11 对我来说它的价值有两块 一块是省时间:想看某个话题下大家在讨论什么,手动逐条摘录的活可以省掉。 另一块是当学习样本:想练浏览器自动化,这个项目挺合适。 采的都是公开内容,频率压住,不碰隐私,不商用。 开源地址:https://github.com/NanmiCoder/MediaCrawler —END— PS:防止找不到本篇文章,可以收藏点赞,方便翻阅查找哦。 往期推荐 把 AI 装进了 SSH 终端,这款强大的远程终端工具开源了! 远程操控多部手机,这款开源软件太牛逼了! 再见EasyExcel,我决定用Apache Fesod Redis Plus 来了,性能炸裂! 这五款牛逼的IDEA插件,堪称代码质量检查利器! 开源项目|一款压测工具,可模拟几十亿的并发场景,太强悍了!

查看完整内容

更多文章