Agent 的上限在上限之外Reddit 收紧公开页给了爬虫什么提醒原文TechCrunch - 《As search traffic dries up, Reddit announces it’s shifting to a logged-in experience》https://techcrunch.com/2026/10/29/as-search-traffic-dries-up-reddit-announces-its-shifting-to-a-logged-in-experience/一、一件跟我们写爬虫直接相关的事Reddit 在第三季度财报电话会上宣布要把产品转向以登录为主的体验。理由说得很直白一是保护数据不被 AI 抓取好去和模型厂商谈授权二是登录用户的广告价值更高能对冲日活下滑。TechCrunch 给的数字是这样的。10 月 Reddit 来自搜索的引荐流量平均每周少了超过 100 万次Q3 全球日活 1.303 亿环比持平美国日活从 Q2 的 5320 万降到 5070 万同比降 2%如果趋势继续下季度日活可能掉两位数百分比——TechCrunch 顺势算了一笔10% 到 12% 就是大约 1.15 亿到 1.17 亿。同期收入同比增 53% 到 8.95 亿美元净利润 2.83 亿美元广告收入 8.47 亿含 AI 数据授权的非广告收入 4800 万。登录墙会先在第四季度于美国以外部分市场测试暂无全球时间表。这件事本身是商业新闻但对我们这些写 Agent 的人它是一份关于数据源会变的现实案例。我这篇不讲财报讲它会怎么打在采集侧的代码上以及现在该怎么改。二、先看清它是怎么变的把改动拆开其实只有三层而且层层收紧层次变化对采集的影响入口公开前台逐步让位给登录体验未登录请求可能落到首页或引导页而不是内容页内容登录后可见的个性化 feed 变多算法推荐流不在公开页里抓不到治理登录墙同时提高抓取难度推动厂商转付费授权长期是要么授权、要么没有值得注意的是 Reddit 自己的补充登录不等于放弃匿名站内还有一个正在重建的隐身上网模式。也就是说它并非要把所有内容都关起来公开前台大概率会保留一部分——只是不再保证搜索点进来就能看到完整内容。对写 Agent 的人来说这三层里最容易被低估的是第二层。很多采集脚本的逻辑是抓公开列表页 → 抓详情页。入口一变列表页可能还在但里面的条目不再是全站的公开内容而是登录态的推荐结果抓回来的是分布完全不同的一批数据。这种变化不会报错只会让数据悄悄变味。三、代码层面最先坏掉的是状态码判断大部分采集脚本的骨架都长这样问题全在 except 那一行asyncdeffetch_page(client,url):respawaitclient.get(url)ifresp.status_code!200:raiseRuntimeError(ffetch failed:{resp.status_code})returnresp.text这段代码在两种情况下会骗你。一种是站点把未登录用户重定向到引导页而 HTTP 客户端默认跟重定向status 仍然是 200返回的却是一段与目标无关的 HTML另一种是站点返回 200 但正文里是一句请登录查看。两种都不会抛异常下游解析器拿到空列表一路传到摘要环节你看到的是今天没有新内容而不是数据源变了。所以第一条改造是把拿没拿到和拿全没拿全分开判定。比较稳的写法是在请求之后加一道结构校验目标页面必须有特征元素、正文长度要够、结果条数不能是零。deflooks_like_content(html:str,marker:str,min_len:int800)-bool:# marker 是该页面稳定存在的特征例如详情页的评论区容器returnmarkerinhtmlandlen(html)min_len这类校验不优雅但它把静默失败变成了显式失败。在无人值守的循环里显式失败远比优雅更重要——因为只有失败才会告警默默走完的那一轮永远没人看。四、第二条改造把来源失效当成一等错误Agent 里最常见的三类错误其实应该分开处理网络错误超时、5xx——重试就行结构错误页面结构变了、字段取不到——重试没用要改解析器权限错误要求登录、被封、被限流——要改策略而且可能改不动。Reddit 这次属于第三类而且是最麻烦的那种它不是你被封了而是这类访问从此不存在了。代码上建议给它们不同的退出码或异常类型调度器才好决定是重试、跳过、还是直接告警等人。一个具体的做法是给数据源维护一份健康度记录每次采集完更新一次source_health[source]{last_ok:now,consecutive_failures:n,failure_kind:auth_required,# network / structure / auth_required}连续失败超过阈值、且 failure_kind 是 auth_required就别再自动重试了直接推一条通知。这条通知的价值比一次成功的采集高得多因为它告诉你这个信息源得换路子了。五、换个思路能不能不抓写 Agent 的人容易形成路径依赖——要数据就去抓页面。Reddit 这件事提醒我们页面是最脆弱的接口它随时可以关掉、随时可以改版而且改版对你是坏事对它可能是增长手段。按稳定性排个序其实很清楚官方 API 一般有明确配额和条款付钱就能稳数据授权是这次 Reddit 明确在谈的路径含 AI 数据授权的非广告收入本期 4800 万美元说明这是它认真在做的生意公开页面最便宜也最脆适合一次性取样本、做调研不适合长期跑的 Agent。把它当成能不用就不用的兜底比当成主路径更稳。落到代码上一个可操作的模式是分层降级优先官方 API拿不到再走缓存最后才走页面采集每一层都记录用了哪一条路径。这样数据源一变你能立刻看到最近 80% 的请求落到了最不稳定的一层而不是等下游发现内容不对。六、登录墙这件事别急着绕写到这里必须说清楚一件事登录墙是站点的访问策略不是技术难题。用自动化脚本模拟登录去绕开它既违反使用条款在多数司法辖区也有合规风险而且对 Agent 来说是个长期负债——账号随时可能被封被封一次就得重写一遍。Reddit 这次的声明里还有一句我印象很深CEO Steve Huffman 说自己这辈子都与开放互联网相连但我得出结论这对我们的平台和对我们的生意都是正确的决定。这句话不必当作借口但它确实是现实开放页面从来不是你的资产是你被允许的临时权限。所以更靠谱的方向是承认这个前提把预算和精力放在授权、官方接口和自建数据上。真要用第三方内容优先找明确提供接口或授权的渠道对方没提供就去谈或者换选题别去绕。七、一个反直觉的点AI Mode 也没让人满意这件事里还有一层对理解整个链路有用。Google 的 AI Mode 月活约 10 亿但 Alphabet 高管承认它的变现能力低于传统搜索同一天 Google 和 Reddit 股价都大跌Alphabet 蒸发约 5000 亿美元市值Reddit 跌超 25%。也就是说流量从链接变成AI 摘要对平台是收入压力对内容站是流量流失对做 Agent 的我们是数据获取成本上升。三方都没有赢。当你发现某个信息源开始收紧大概率不是针对你而是整条链路的成本在往上走。这个判断的实际意义是不要把某个源还能抓当成长期方案任何时候都该有个次优来源排队。八、给做 Agent 的人的四条硬建议第一入口判定要和内容判定分开写。200 不代表拿到内容拿到内容不代表拿全。第二把失败分类。网络、结构、权限三类错误分开处理只有权限类值得立刻告警因为它通常不会自愈。第三信息来源分层。官方接口 授权数据 缓存 页面采集每层记录命中率定期看一次分布。第四别用登录绕过访问策略。合规成本和账号风险都比改一次数据源高而且它不会随着规模变大而变便宜。至于具体要不要继续用某个源判断标准其实很简单它有没有一条你能长期依赖的、明确许可的取数路径。有就用没有就换。Reddit 这次的转身只是又一次把这个问题摆到台面上。
阅读完成 · 觉得有帮助?