本页内容
问任何一位做抓取的开发者:2026 年最难搞的主流网站是哪个?Reddit 是个稳妥的答案。我们对此深有体会 — reddit.com 挡住了 CrawlForge 的每一条直接访问路径,从普通的 fetch 到完整的隐身浏览器。所以 CrawlForge MCP v5.1.0 不再硬撼这堵墙,而是绕了过去:新的 reddit_search 工具 — 我们的第 28 个工具 — 通过社区运营的归档搜索 Reddit 帖子和评论、读取完整讨论串,不需要 Reddit API key,不需要 OAuth 应用,不需要任何形式的凭证。
目录
- 本次发布了什么
- 为什么 reddit.com 无法被抓取
- 认识 reddit_search
- 两个归档:Arctic Shift 与 PullPush
- 路由如何工作
- 坦诚的注意事项
- 通过 MCP 和 REST 使用
- reddit-thread 模板还能用吗?
- 自 v5.0.4 以来的其他更新
- credits 成本
- 如何升级
本次发布了什么
v5.1.0 是一个目标明确的次版本,只有一条头条:
reddit_search— 通过 Arctic Shift 和 PullPush 社区归档,搜索 Reddit 帖子(标题 + 正文 selftext)和评论,或读取一个帖子及其嵌套评论树。三种模式、可限定范围的过滤器、规范化的输出。每次调用 2 credits。- 工具总数从 27 个增加到 28 个,MCP 服务器卡片、工具说明和入门提示词都已认识这位新成员。
- 新增 31 个单元测试(套件总数达 1,018 个),全部 28 个工具保持 100% MCP 协议合规,并通过 MCP stdio 实测返回了真实的 r/ClaudeAI 帖子。
为什么 reddit.com 无法被抓取
选择归档并非出于偏好 — 我们先量了量这堵墙。在动手构建这个工具之前,我们把每一条直接路径都对 reddit.com 实测了一遍:
- 带完整浏览器 User-Agent 的
fetch_url:403 - 针对 old.reddit.com 的
scrape:403 - 使用 reddit-thread 模板的
scrape_template:403 - 开到最高级别的
stealth_mode:403
这套封锁是分层的 — 先是数据中心 IP 信誉,然后是握手阶段的 TLS 指纹识别,最后是 JavaScript 质询 — 这正是服务器上连隐身浏览器都会失败的原因。而那扇"正规的门"也在收窄:2025 年 11 月,Reddit 依据其 Responsible Builder Policy 关闭了自助式 API 注册,新的官方 API 凭证申请要走审批流程,而不再是一张注册表单。大多数 Reddit MCP 服务器封装的正是那个官方 API,这让"拿到凭证"成了它们安装过程中最难的一步。
reddit_search 把这一切都绕开了。它从不向 reddit.com 发送任何一个请求。
认识 reddit_search
一个工具,三种模式:
posts(默认)— 对帖子标题和正文 selftext 做关键词搜索,可选限定到某个 subreddit 或作者。支持"quoted phrases"(引号短语)、OR和-exclusion(排除词)。comments— 对评论正文做全文搜索,这是官方 Reddit API 完全做不到的事。thread— 给它一个帖子 ID,就能拿到该帖子及其嵌套评论树,对深到无法展开的分支带有 reddit 风格的折叠标记。
过滤器覆盖 subreddit、author、after/before 日期(ISO 8601、epoch 秒,或 "7d" 这样的偏移量)、limit(最多 100)和 sort。结果以规范化形式返回:完整的 reddit.com 永久链接、ISO 日期、得分、评论数,文本截断到 2,000 字符并带截断标记,这样一份 100 条结果的载荷对 LLM 上下文窗口依然友好。
从 MCP 客户端发起的典型调用长这样:
{
"tool": "reddit_search",
"arguments": {
"query": "best mcp servers",
"subreddit": "ClaudeAI",
"mode": "posts",
"limit": 10
}
}从结果中取任意一个帖子的 id,以 link_id 配合 mode: "thread" 传回去,就能拿到整场讨论 — 随时可以交给 summarize_content 或 analyze_content,转成情感、主题和一份简报。
两个归档:Arctic Shift 与 PullPush
如果你还记得 Pushshift — 那个广受喜爱、却在 2023 年失去 API 访问权限的 Reddit 研究归档 — 这两个项目就是它的后继者,也正是 reddit_search 所查询的对象:
- Arctic Shift 以近实时速度摄取 Reddit。实测期间它返回过一篇当天刚发布的帖子,并提供真正的嵌套评论树。它唯一有文档记载的限制:关键词搜索必须限定到某个 subreddit 或作者。
- PullPush 兼容 Pushshift,能做 Arctic Shift 不做的事 — 对整个 Reddit 做全文搜索。代价是:其 2023 年之后的归档存在有文档记载的缺口,以及激进的速率限制。
两者都免费、都由社区运营、都不需要凭证。每个响应都附带来源说明,写明是哪个归档作答,下游消费者永远知道数据来自哪里。
路由如何工作
除非你主动想选,否则永远不用挑后端。在默认的 auto 模式下:
- 限定范围的搜索(带
subreddit或author过滤器)和讨论串读取走 Arctic Shift — 更新鲜的那个归档 — PullPush 仅在出错时作为回退。回退一旦触发,响应会在fallback_used字段中如实说明。 - 面向整个 Reddit 的无限定关键词搜索走 PullPush,因为它是唯一支持这种搜索的归档。
底层管道消化了两个归档的各种怪癖:每个请求都携带能表明身份的 User-Agent(实测显示 Arctic Shift 会把匿名客户端限流进一个共享桶),瞬时限流响应会得到一次有界重试,PullPush 的限流消息原样透传,让你看到真实原因而不是一个笼统的错误。如果你的流水线需要不同的时间预算,环境变量 REDDIT_SEARCH_TIMEOUT_MS 可以覆盖 30 秒的单请求上限。
坦诚的注意事项
归档数据有它的毛边,我们宁愿把它们写进文档,也不想让你自己踩到:
- 非常新的内容数值偏低。 归档在帖子出现的瞬间就会捕获它们,所以发布不足约 36 小时的内容,得分和评论数经常显示 0 或 1。内容本身在那里,只是票数统计还没跟上。
- PullPush 在 2023 年之后有缺口。 一次无限定搜索返回空结果,并不能证明内容不存在。能限定就限定到某个 subreddit 或作者 — 这会把你路由到更完整的那个归档。
- 已删除的内容可能仍留存在归档中。 这是归档运作方式的固有属性,而且是把双刃剑:这也正是研究者使用归档的原因。
通过 MCP 和 REST 使用
在 MCP 客户端 — Claude Desktop、Claude Code、Cursor — 里直接开口问就行:"搜索 r/webdev 最近一个月关于抓取基础设施的讨论,并总结主要的抱怨。" 客户端里的 agent 会自行选中 reddit_search、限定范围,并自己串联出总结。
通过 REST API,只需一个带认证的 POST:
const response = await fetch('https://crawlforge.dev/api/v1/tools/reddit_search', {
method: 'POST',
headers: {
'X-API-Key': process.env.CRAWLFORGE_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({
query: 'best mechanical keyboard',
subreddit: 'MechanicalKeyboards',
mode: 'posts',
limit: 10,
}),
});
const { data } = await response.json();
console.log(`${data.count} posts via ${data.source}`);你也可以零配置地在 playground 里试用 — reddit_search 已与其余 27 个工具一起上线。
reddit-thread 模板还能用吗?
scrape_template 仍然自带 reddit-thread 模板,但它指向的是 reddit.com — 恰恰是本次版本绕开的那堵墙 — 所以它已无法可靠工作。scrape_template 文档现在把这一点写得明明白白,并把 Reddit 相关的工作指向 reddit_search。其余九个模板(Amazon、GitHub、YouTube、Hacker News 等)不受影响。
自 v5.0.4 以来的其他更新
如果你跳过了两个版本之间的那个补丁:v5.0.5 修正了 serp_rank 一直断言错误的两个数字 — DataForSEO 请求超时(现在默认 120 秒,可通过 DATAFORSEO_TIMEOUT_MS 调整,因为深度 100 的实时 Google 抓取动辄需要 30-60 秒以上),以及文档标注的上游成本(旧数字是深度 10 的价格,比深度 100 默认档实际计费低 10 倍)。它还修复了 Smithery 上的产品列表:工具表现在派生自实时注册表,而不是一张手写卡片。v5.0.x 加固周期的完整故事见 v5.0.4 实测文章。
credits 成本
reddit_search 每次调用 2 credits — 无论是搜索还是完整讨论串读取,同一个价。换算一下:Free 计划的 1,000 个初始 credits 足够 500 次 Reddit 搜索;一次搜索、加一次讨论串读取、再对结果跑一次 summarize_content,端到端 8 credits。一如既往,失败的请求不计费。
如何升级
npm install -g crawlforge-mcp-server@latest
crawlforge --version # 5.1.0或者,如果你的 MCP 客户端用 npx 启动服务器,下次重启时会自动拿到 5.1.0。所有既有工具都没有任何 schema、输出结构或 credits 成本变化 — 这是一次可以直接替换的升级。
准备好不用 API key 就挖掘 Reddit 讨论了吗? 免费开始,赠送 1,000 credits — 足够 500 次搜索 — 并阅读 reddit_search API 参考,了解每个参数和模式。
亲自试一试——无需注册
在 Playground 中运行 CrawlForge 的 28 个抓取与提取工具中的任意一个,然后免费开始,获取 1,000 credits。
1,000 免费 credits • 一次性 • 无需信用卡
标签
及时获取最新洞察
将教程、产品更新与 Web 抓取技巧直接发送到你的收件箱。
拒绝垃圾邮件,随时可取消订阅。