获取微信公众号文章,我试了 6 种方案,最后发现最简单的那个最能打

0 阅读5分钟

前阵子想批量存一批公众号文章,发现事情没那么简单。

微信公众号文章不像普通网页,直接 curl 或者 requests 请求,大概率给你弹一个滑块验证码。验不过就拿不到内容。验过了?频率一高,滑块又来了。

我花了一周时间,把市面上能搜到的方案全试了一遍。浏览器手动复制、Python + 代理 IP、Selenium 自动化、抓包逆向 API、第三方 SaaS 服务,还有一个在 V2EX 上看到的极简方案——UA 伪装法。

结论先放这儿:如果你只是想稳定抓取公开文章,UA 伪装是性价比最高的方案。 没有之一。

image-20260402151448744


一条 curl 的魔法

事情起因是 V2EX 上一个帖子。有人说微信文章只要把 User-Agent 改成微信内置浏览器的标识,就能直接拿到完整 HTML,不用 Cookie、不用登录、不用代理。

我一开始不太信。试了一下:

curl -sL \
 -H "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.34(0x16082222) NetType/WIFI Language/zh_CN" \
 "https://mp.weixin.qq.com/s/xxxxxx"

结果真的拿到了完整页面。

image-20260402151413265

没有滑块,没有重定向,没有"请在微信中打开"。就是这么朴实无华。

后来想了一下原理,其实很简单。微信公众号文章的反爬策略主要靠三板斧:

  1. 检查 User-Agent 里有没有 MicroMessenger 这个关键字
  2. 没有的话,弹滑块验证码
  3. 频率太高了,再考虑 IP 限制

换句话说,它的"反爬"本质上不是反机器人,而是只允许微信生态内的流量。你只要在 UA 里声明自己是微信客户端,服务器就放你过去。这层验证形同虚设,但偏偏就是挡住了大多数爬虫。

如果你用 OpenClaw 或者类似的 Agent 框架,可以把这套逻辑封装成一个 Skill,以后直接调用。


为什么这个方案能「降维打击」?

让我们把它和常见方案做个对比,你就知道它有多优雅了。

方案一:浏览器手动复制

最原始的办法——打开文章,Ctrl+A 全选,复制粘贴。

零门槛,不需要写任何代码。但你要是想存个几十篇,这个体力活能把你干废。而且频繁手动操作一样会触发滑块。

结论:偶尔存一两篇可以,批量别想了。

方案二:Python requests + 代理 IP 池

这是中文互联网上搜到最多的方案。思路是:请求被拦了就换代理 IP 重试。

能跑通,但问题不少。首先代理 IP 要钱,质量好的住宅代理一个月几十到几百块。其次滑块识别在不断升级,换了代理不一定能绕过,还得配合打码服务。整个链路又贵又脆。

结论:适合有预算的大规模采集团队,个人用完全是杀鸡用牛刀。

方案三:Selenium / Playwright 模拟浏览器

启动一个真实浏览器实例,模拟人的操作去加载页面、提取内容。

优点是能执行 JavaScript,拿到渲染后的完整 DOM。但代价很明显:每个实例吃 200MB 左右内存,速度慢(每次要等页面加载),而且现在不少网站都有自动化指纹检测,Selenium 容易被识别出来。滑块验证也不一定能自动过,可能还得接第三方打码。

结论:如果你需要登录、需要滚动加载、需要复杂交互,这是唯一选择。但如果只是抓个文章 HTML,太重了。

方案四:抓包逆向 API 接口

用 Charles 或 Fiddler 抓微信客户端的真实请求,提取 API 参数,然后模拟调用。

好处是能直接拿到结构化数据,不用解析 HTML。但坏处更突出:逆向成本高,参数经常变,Cookie 和 Token 会过期,需要持续维护。本质上是在跟微信的安全团队打持久战。

结论:适合需要长期稳定数据管道的团队,普通需求没必要搞这么复杂。

方案五:第三方 SaaS 服务

各种"微信文章采集器""公众号数据平台",开箱即用。

省事是真省事,但问题也不少——费用不低,数据质量和时效没保证,而且你把命脉交给了第三方。哪天服务挂了或者涨价了,你只能干瞪眼。

结论:非技术团队的轻量需求可以考虑,但别把核心业务绑在上面。


方案对比一张表

方案成本技术门槛绕滑块速度稳定性适合谁
UA 伪装免费极低✅ 天然绕极快个人/小团队
代理 IP❌ 不一定中大规模
自动化浏览器⚠️ 可能触发复杂交互
API 逆向✅ 模拟真实长期数据流
第三方服务✅ 对方搞定不定非技术团队
手动复制免费⚠️ 会触发极慢偶尔用用

最后说几句实话

关于风险,别装看不见:

  1. 频率要克制。别开着脚本一秒十条地请求,迟早被封 IP。加个随机延迟,一两秒间隔足够。
  2. 微信随时可能改策略。今天能用不代表明天能用。如果哪天 UA 伪装失效了,说明微信把这个洞堵上了——到时候再找新方案。
  3. 抓取不等于拥有版权。你可以存档、分析、做内部参考,但别直接搬运到自己的公众号上。
  4. 合规底线。大规模商业抓取有法律风险,个人学习研究用没问题,别越界。

说到底,UA 伪装法的价值不在于它有多"高级",而在于它够简单。简单到你不需要装任何依赖、不需要买任何服务、不需要维护任何基础设施,一条命令就能开始干活。

搞技术这些年我最大的体会就是:最优雅的方案往往不是最复杂的那个,而是刚好够用的那个。