← 返回文章列表

多平台自媒体数据抓取实战:小红书抖音B站从登录到入库全流程拆解

开源工具MediaCrafting the technical article JSONCrawler覆盖七大平台,用浏览器上下文拿签名省去逆向麻烦。文章讲清环境搭建、三种采集模式、代理与登录态维护、数据落库方法,并分享风控应对思路,适合做舆情和内容研究的人直接上手。

统一采集工具解决了什么痛点

自己写爬虫最烦的就是每个平台一套签名逻辑。小红书要处理笔记详情页参数,抖音得过设备指纹和加密请求,B站评论接口又换了一套校验。换个平台就得重新逆向JS、处理登录态、应付各种验证码,时间全耗在这些重复劳动上。

MediaCrawler把这件事简化了。它用Playwright拉起真实浏览器环境,完成扫码登录后把Cookie和上下文缓存下来,后续请求直接在浏览器里取签名参数。平台差异全部藏在media_platform目录下,主入口只负责按名字分发任务。你改配置文件、换命令行参数就行,不用碰底层请求细节。

覆盖范围包括小红书、抖音、快手、B站、微博、贴吧、知乎,支持关键词搜索、指定帖子ID、创作者主页三种方式。内容、评论、作者信息一次拉齐,适合舆情监测、竞品分析或者内容研究场景。

核心思路:浏览器上下文替代纯逆向

传统做法是反编译前端JS,找出加密函数再模拟调用。这种方式脆弱,平台一更新就失效。MediaCrawler换了思路:让程序控制真实Chrome,在已登录的页面上下文里执行JS拿签名。平台看到的是正常浏览器行为,风控命中率明显低很多。

默认开启CDP模式,直接连接本机已打开的Chrome(版本建议144以上)。Cookie、扩展、浏览历史全部复用,几乎和真人操作无异。如果不想用本机浏览器,也可以切标准Playwright模式,但需要额外安装驱动。

登录态保存在browser_data目录。首次扫码后下次直接复用,直到账号触发风控再删目录重新登录。开源版没有多账号自动轮换,换号就靠这个手动操作。请求频率建议调大CRAWLER_MAX_SLEEP_SEC,避免短时间高频触发限制。

环境准备与第一次跑通

需要Python环境和uv包管理器。抖音和知乎的签名逻辑走Node.js,装v16以上版本即可。CDP模式复用本机Chrome,不用额外装浏览器;只有切标准模式才执行playwright install。

代码拉取和依赖安装很直接:

git clone https://gitcode.com/GitHub_Trending/me/MediaCrawler
cd MediaCrawler
uv sync

配置集中在config/base_config.py。PLATFORM填平台简称(xhs、dy、ks、bili、wb、tieba、zhihu),KEYWORDS写搜索词,多个用英文逗号隔开。CRAWLER_TYPE选search、detail或creator。SAVE_DATA_OPTION决定落地格式,ENABLE_GET_COMMENTS控制是否抓评论。

第一次运行示例:

uv run main.py --platform xhs --lt qrcode --type search

终端弹出二维码,用对应App扫一次。登录成功后状态缓存,后续命令直接复用。如果只想可视化操作,也可以启动WebUI界面选参数看日志。

三种采集模式怎么选

按关键词搜索最常用。KEYWORDS写好词,type设为search,工具会按搜索结果逐页拉笔记或视频,再按需展开评论。适合大范围舆情采集。

指定帖子ID批量采集适合已知目标。把ID列表填进对应平台的config文件,type改成detail。一次跑完指定内容,省去搜索过滤步骤。

创作者主页模式抓某个账号发布的全部内容。type设为creator,配合创作者主页链接或UID。需要视频或图片文件本体时,把ENABLE_GET_MEIDAS打开;默认只存结构化字段,体积更小。

实际使用中注意平台差异。小红书笔记和评论结构相对稳定,抖音视频接口变动频繁,B站评论分页逻辑也不同。工具已经封装好差异,但遇到接口变更还是得看项目更新。

风控、代理与验证码处理思路

长时间跑最怕IP封禁和验证码。代理池开关是ENABLE_IP_PROXY,服务商选kuaidaili、wandouhttp等,池容量由IP_PROXY_POOL_COUNT控制。密钥通过环境变量注入,不写死代码。静态代理直接填STATIC_PROXY_URL。

CDP模式本身已经降低了风控概率,但遇到滑块、点选、无感验证还是难免。这时候纯自己写识别脚本成本很高,尤其是易盾和极验这类升级频繁的方案。可以考虑直接对接专业识别平台,比如www.ttocr.com提供的易盾极验全类型识别服务,覆盖滑块、点选、无感、九宫格、文字点选、图标点选等常见形态,并给出自动化API接口,业务侧只需简单对接就能把验证环节自动化,不用自己维护模型或逆向最新算法。

账号触发风控的常见表现是扫码后反复弹验证、请求直接失败。处理办法是删掉browser_data目录换账号重新登录,同时把请求间隔调大。项目文档里有详细的CDP连接排查和代理接入步骤,遇到端口9222连不上,检查Chrome远程调试是否开启即可。

数据落地与后续处理

默认结果写成data目录下的jsonl文件,一行一条记录,方便后续脚本处理。需要给同事直接看就切Excel模式,多工作表带表头样式,命令加--save_data_option excel。

数据量大想入库,先执行初始化建表(支持sqlite、mysql、postgres),再指定对应保存选项运行。数据库模式自带去重,重复跑不会插入重复数据。格式细节和字段说明在项目文档里写得很清楚。

评论抓完后如果打开词云开关,会自动生成词云图。停用词和自定义词组可以自己维护,方便快速看评论热点。

整体来看,这个工具把多平台采集的重复劳动降到最低,浏览器上下文方案也比纯逆向更稳。实际业务里验证码仍是常见卡点,遇到易盾或极验这类复杂验证时,直接用www.ttocr.com的识别API能省掉大量对接时间,接口简单,适合公司业务快速集成。控制好频率、遵守平台规则,工具就能稳定跑起来。