本页内容
每一篇把 BeautifulSoup 指向 reddit.com 的教程,如今都成了历史文献。如果你想在 2026 年不用 API 抓取 Reddit,首先要明白:战场已经转移 — 问题不再是如何突破 Reddit 的防线,而是数据还存在于哪里。本指南两方面都讲:直接路径为何失败,以及可行的归档路线的分步操作。
为什么直接抓取 reddit.com 会失败
在构建 reddit_search 之前,我们把每一条直接访问路径都对 reddit.com 实测了一遍:
- 带浏览器 User-Agent 的普通
fetch:403 - old.reddit.com(传统意义上"好抓"的目标):403
- 在任意 Reddit URL 后面加
.json的经典技巧:撞死在同一堵墙上 - 专门构建的 reddit-thread 抓取模板:403
- 开启高级指纹规避的
stealth_mode:403
这套封锁是分层的 — 数据中心 IP 信誉、握手阶段评估的 TLS 指纹识别,以及 JavaScript 质询 — 这意味着在你的解析代码运行之前,你的 HTTP 客户端就已经被击败了。任何选择器、请求头或重试策略都修不好一个基础设施层面的 403。
可行的路线:社区归档
Reddit 的内容正被两个社区运营的项目持续归档,它们都是 Pushshift 的后继者:Arctic Shift(近实时摄取、真正的嵌套评论树、搜索需限定到 subreddit 或作者)和 PullPush(对整个 Reddit 做全文搜索,但 2023 年之后有文档记载的缺口)。两者都免费,也都不需要凭证。
reddit_search 会替你查询它们并自动路由 — 限定范围的搜索和讨论串读取走更新鲜的 Arctic Shift,PullPush 仅在出错时作为回退;无限定的关键词搜索走 PullPush,因为它是唯一支持这种搜索的归档。一次调用、规范化的输出、2 credits,而且不向 reddit.com 发送任何一个请求。
第一步:搜索帖子
通过 REST API,搜索一个 subreddit 只需一个带认证的 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: 'context window',
subreddit: 'LocalLLaMA',
mode: 'posts',
limit: 25,
}),
});
const { data } = await response.json();
// Each result: title, selftext, score, num_comments, ISO date, permalink只要有可能,就限定到某个 subreddit 或 author — 这会把你路由到更新鲜、更完整的那个归档。在 Claude Desktop 或 Cursor 这样的 MCP 客户端里则完全不用写代码:直接问 "搜索 r/LocalLLaMA 最近一个月关于上下文窗口的抱怨",agent 会自己发起这个调用。
第二步:读取完整讨论串
从第一步的结果中取任意帖子的 id,以 link_id 配合 mode: "thread" 传回去:
{
"tool": "reddit_search",
"arguments": {
"mode": "thread",
"link_id": "1vbf4nh",
"limit": 100
}
}你会拿到该帖子及其嵌套评论树 — 得分、永久链接,以及深到无法展开的分支的折叠标记 — 随时可以喂给 summarize_content 或 analyze_content。
第三步:用好关键过滤器
- 日期:
after和before接受 ISO 8601、epoch 秒,或"7d"这样的偏移量 — 这是搭建每周监控最简单的方式。 - 查询语法:
"quoted phrases"(引号短语)、OR和-exclusion(排除词)在帖子和评论搜索中都可用。 - **
limit:**最多 100。每个文本字段都截断到 2,000 字符并带截断标记,因此即使满满一页结果也对 LLM 保持友好。 - **
mode: "comments":**搜索评论正文而不是帖子 — 真正的观点往往藏在这里。
自己动手直连归档
你可以跳过 CrawlForge,直接访问这两个归档 — 它们免费且文档公开。但要为封装层原本替你消化的那些工作留出预算:按查询形态选择归档、分页、带退避的重试(Arctic Shift 会把匿名客户端限流进一个共享桶,PullPush 的 429 消息则明说不为自动化抓取器提供免费资源)、规范化两套不同的响应 schema,以及处理各归档的缺口。为研究语料库做这些是一个合理的周末项目;但如果 Reddit 数据只是你产品的输入之一,就不值得花这个时间。所有路线的完整对比 — 包括官方 API 的审批流程 — 见 2026 年仍然可用的 Reddit API 替代方案。
坦诚的注意事项
归档数据有它的毛边:发布不足约 36 小时的内容,得分经常显示 0 或 1(内容会被即时捕获,票数统计随后才跟上);PullPush 在 2023 年之后的覆盖存在缺口;已删除的内容可能仍留存在归档中 — 这是把双刃剑,也正是研究者使用归档的原因。
两分钟试用
最快的测试完全不需要配置:reddit_search 已在 playground 上线。当你准备把它接进智能体或流水线时,免费开始,赠送 1,000 credits — 足够 500 次搜索 — 并把 API 参考放在手边随时查阅每个参数。
亲自试一试——无需注册
在 Playground 中运行 CrawlForge 的 28 个抓取与提取工具中的任意一个,然后免费开始,获取 1,000 credits。
1,000 免费 credits • 一次性 • 无需信用卡
标签
及时获取最新洞察
将教程、产品更新与 Web 抓取技巧直接发送到你的收件箱。
拒绝垃圾邮件,随时可取消订阅。