Agent Skills
返回列表
📊

Reddit 数据抓取助手

数据分析 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/reddit-fetch 技能到当前 AI 助手中。

技能介绍

问题:Reddit 直接抓 JSON 已被全面拦截

在 Reddit 上做数据分析,最省事的入口本是它的公开 JSON 接口——任何 Reddit 链接后面加 .json 就能拿到结构化数据。但如今自动化访问几乎被彻底封死:无论宿主机还是容器,无论怎么改 User-Agent,curl 基本都返回 403;连用冷启动的 Playwright 直接打开 reddit.com,也会撞上 “You've been blocked by network security” 挑战页。这意味着,能跑通的路径不再是“直接请求”,而是先骗过一次风控拿到会话 Cookie。

核心能力:用 DuckDuckGo 跳转解锁 .json

本技能的关键在于一个前置“hop”:通过 DuckDuckGo 搜索结果跳转到 Reddit,让 Reddit 正常种下 session cookie,之后整场会话里就能直接访问 .json。

  • Step 1:DDG hop

用 Playwright 打开形如 https://html.duckduckgo.com/html/?q=site:reddit.com/r/SUBREDDIT+YOUR+QUERY 的搜索 URL;取第一条结果的完整 href(DDG 重定向里必须带 rut token,只拿裸 /l/?uddg= 会 400),再 browser_navigate 到该完整跳转链接。它会落到任意一个真实 Reddit 页面(标题正常而非 “Blocked”),从而设置 cookie;不必恰好命中你要的那个帖子或版块。

  • Step 2:直接读 .json

hop 成功后,会话内可把 Playwright 直接导航到 https://www.reddit.com/... 的 .json URL,并用 JSON.parse(document.body.innerText) 解析。排序参数照常可用,例如 sort=new&t=week 做最近一周拉取。

拿到数据后按已知 JSON 形状处理即可:列表页看 .data.children[].data(title / score / num_comments / author / id);帖子页解析 comments/POST_ID.json?limit=30&sort=top,其中 data[0] 是主帖,data[1].data.children(过滤 kind == "t1")是评论,嵌套回复结构相同。长评论建议截断输出(如 JS 中 body.slice(0, 300),jq 1.7+ 用 .body[:300])。

边界与注意点

  • 若 Playwright 报 Browser is already in use,通常是一个僵死实例占用 profile:按提示 pkill -f ms-playwright-mcp(或清掉报错中的 profile 目录)后重试。
  • browser_evaluate 必须包在 try/catch 里;失败时先回传 document.body.innerText.slice(0,200),方便一眼看出是不是挑战页(说明 cookie 过期,需重新做 DDG hop)。
  • Reddit 即使解锁后限流也很激进:不要并发。串行请求并在两次导航间 sleep 2/sleep 3;出现空响应(0 bytes)等 3–5 秒重试,遇到 HTTP 429 退避 10–15 秒。
  • 需要比 .json?limit= 更多的评论时,可在 hop 后加载渲染后的 thread 页面,改抓 shreddit DOM。若环境没有 Playwright,可用 Claude for Chrome 打开 thread 或 .json 页面读取;curl 只值得在已经要起 shell、又没浏览器时快速试一次(带浏览器 UA,-L 跟随重定向,URL 用单引号防止 shell 吃掉 &),一旦 403 就直接回到 DDG hop,不要再反复换 UA 硬刚。

使用场景

  • 你在做社区舆情分析,需要按 subreddit 拉取最近一周的帖子标题、得分和评论,建立研究样本。
  • 你想复盘某篇帖子的讨论脉络,需要先通过 DDG 跳转解锁 Reddit,再读取 comments JSON 的 top 评论。
  • 自动化管道已经会调 curl,但 Reddit 持续返回 403;你需要在已有 shell 流程里做一次快速兜底抓取。
  • 你在比对 Reddit 讨论的热度变化,需要串行抓取列表页和多个帖子页,避免触发限流或挑战页。

适合人员

  • 数据工程师:想把 Reddit JSON 接进 ETL,但需要先解决 403 和限流,稳定产出帖子与评论表。
  • 社区运营:想监控指定 subreddit 最近一周的高赞话题和评论区反馈,用于选题和复盘。
  • 爬虫工程师:用 Playwright 复现 DDG 跳转拿到会话 Cookie,再批量但串行读取 Reddit JSON。
  • 研究人员:需要从 Reddit 帖子和评论中提取作者、得分、正文和嵌套回复,形成分析语料。