Anderson 视角

AI收到的所有“OK”网页响应中,有20%其实并不正常

mm
将 Unite.AI 添加到您在 Google 上的首选来源
AI-generated image (GPT Image 2): A smiling cartoon clown with red hair, a striped hat, spotted bow tie and outstretched hands sits above a large “Welcome!” sign. Beneath the canopy, four metal turnstiles are boarded with plywood, chains and padlocks. Rusted barriers, striped columns, weeds, cracked pavement and blue sky complete the scene.

我最近进行的 AI 辅助网页抓取实验,让我切身体会到网络正变得越来越“封闭”。促使网站采取这种收紧措施的原因,当然是 AI 网页抓取的惊人增长;对新数据的不懈需求最终甚至可能令网站域名下线。

这给了网站一个很好的理由,让它们可以做许多早就想做的事:只有用户登录后才能访问网站内容(不过,Googlebot 通常可以畅通无阻)。Facebook 于2023 年完成了这项政策的逐步实施,Twitter/X 也在同一年采取了同样做法。Reddit 将于本月晚些时候实施这项政策。

这样一来,网站就能更轻松地遵守各国针对年龄限制的执行规定,因为用户已经注册。更重要的是,用户数据可以被保存下来,用于本地分析;在当地法律允许的情况下,还可以出售给数据经纪商和 AI 公司。

据 Cloudflare 称,其他专门用于防御机器人(而非招揽用户)的措施同比增加了逾 58%;机器人活动不断升级,自然也促使网站仔细审查VPN 和代理地址,这可能会连同任何“恶意”流量一起,阻止合法用户访问。

从个人体验来看,我似乎越来越频繁地遇到“拦截”响应或验证挑战,以至于有时甚至会放弃访问一个开始加载这些内容的网站。既然研究发现 CAPTCHA 验证墙会劝退用户和潜在客户,我们不难想象,这会给域名所有者带来多大压力,促使他们不顾这种负面影响也采用这些措施。

archive.is 的验证码。该网站是众多采用验证挑战的网站之一,通常是为了应对过多的自动化请求(而非人工请求)。

archive.is 的验证码。该网站是众多采用验证挑战的网站之一,通常是为了应对过多的自动化请求(而非人工请求)。

这些新增的、更严格的访问障碍,部分出于实际需要(因为并非所有网站都能承受这波冲击),但往往也像是一种谈判策略,旨在试探 AI 公司是否愿意为它们极其渴求、长期以来一直免费获取的数据,提供单独或集体的报酬。如今,这种免费获取的局面即将改变。

由于 AI 爬虫必须大规模运行,它们往往会在 Playwright 框架下使用“无头”Chrome 实例。如今,越来越多的网站会对此返回 403(“禁止访问”)错误(也就是说,主机知道你发来的是自动化流量,于是让你滚蛋):

changedetection.io 的本地安装程序尝试轮询某个网站,但该网站不接受框架所使用、且被检测到的浏览器,因此返回 403(“禁止访问”)响应。

changedetection.io 的本地安装程序尝试轮询某个网站,但该网站不接受框架所使用、且被检测到的浏览器,因此返回 403(“禁止访问”)响应。

人们想要的是 “200”(“正常”)客户端响应;即使为了得到它,必须掏出一大笔钱交给住宅代理农场,并配合其他各式各样、偷偷摸摸的非人类手段,也在所不惜。

没有什么比 200 响应更好了;也就是说,没有哪种客户端响应代码能传递更强的正面信号。它也不是一种模棱两可的响应:它绝不会是“差不多正常”、“过一会儿就会正常”,或“正在变得更正常”;它就是“正常!”。如果情况不正常,那就不是 200 响应。

你好!请走开

不过,一篇新论文指出,这种缺乏细分的情况可能会严重扭曲 AI 数据集、统计估算,以及在实际情况并非如此时报告的“良好”状态。

这项研究*估计,约五分之一的 200 类响应完全不含可用的网页内容,而是返回空白的网站框架、CAPTCHA 验证挑战、访问限制或替代页面。

论文指出:

“静态客户端收到的状态码为 200 的页面中,有 20.9% 不包含页面的主要内容:应用程序框架、机器人验证挑战、拦截页面、错误页面和占位页面,以及不完整内容。”

在这方面,缺乏耐心的自动化系统反而会被自身的简单粗疏绊住脚,因为“200”响应可能被视为抓取成功,即使抓取结果只是 CAPTCHA 验证墙、付费墙或其他障碍。

论文列出了经常导致 200 响应变得复杂的七类内容:

200 响应中绝非“正常”的七类内容。来源 - https://arxiv.org/pdf/2611.00884

200 响应中绝非“正常”的七类内容。 来源

这项研究历时三天,使用基础网页抓取程序和能够加载 JavaScript 的浏览器,对 10,307 个网址进行了测试,并根据实际获取的内容而非 HTTP 状态码对响应进行分类。

在无法使用的 202 响应中,数量最多的是空白网站框架以及错误页或替代页,这两类合计占失败案例的三分之二以上。

至于空白网站框架,网站可能会显示菜单和导航,却将用户请求的文章或产品列表留空;后一种情况下,显示的也可能是无关页面或首页,而不是用户请求的内容。不过,这两种情况都可能收到与成功获取到可用且有价值内容时相同的 HTTP 200 状态码。

作为解决办法,论文建议网页抓取工具报告实际获取到的内容,而不是依赖 HTTP 状态码,因为只需检查页面是否异常短、是否存在可疑重定向,以及内容是否类似不存在的页面,就能识别大多数失败情况。

只有在页面似乎未能正常加载时,才可使用资源消耗更大的浏览器工具。此外,AI 评估可以检查引用的来源是否确实包含预期信息,而不是想当然地认为 HTTP 200 响应就意味着内容已成功获取。

这项新研究的作者还指出,使用页面长度、重定向以及与不存在页面的相似度等基础检查,“廉价启发式方法”就能轻松识别约 86% 的不可用响应:

不同网页抓取策略的成本与效益。在调用完整浏览器之前先检查可疑响应,获得的结果相近,但计算成本大幅降低。

网页抓取策略比较:仅渲染被标记为可疑的页面,获取到的可用内容略多于渲染所有页面(81.4% 对比 80.3%),同时将平均每页获取时间从 20.6 秒缩短至 5.8 秒。

为什么会有这么多错误的 200 响应?

多年来,开发者社区中一直有人争论,认为202(“已接受”)错误(“请求已接受,但尚未完成”)可以区分这些状态为 200、实际却“失败”的请求;但事实上,202 无法涵盖这篇新论文列出的所有情况,而且目前也没有任何现成代码能够做到这一点。

尽管论文没有深入探讨这个问题,但域名所有者为何会允许出现 200 错误,或许值得未来相关研究进一步调查。

原因之一可能是,任何非 200 响应本质上都属于某种错误页面或阻碍,其中包括最常见的404(“未找到”)错误——这表示目标内容根本不存在。有人认为,此类错误过多会导致 SEO(以及可能还有GEO)受到惩罚,但 Google否认了这一点。

事实上,Google 将错误的 200 响应视为“软”404;这类响应显然比普通 404 错误更可能被视为问题,因为无论是否出于故意,它们本质上都是“具有欺骗性”的结果。

引用漂移

如果这一切听起来像是在吹毛求疵,就应当考虑到,为了训练 AI,人们经常收集(或试图收集)的数据规模可达拍字节级别。如果其中整整五分之一的数据不可靠或具有明显欺骗性,其后续影响就很难被轻描淡写地归为某种“附带误差”;相反,这类错误响应可能会显著不利地影响数据集中的数据分布,以及使用这些数据训练 AI 模型所产生的结果。

例如,错误的 200 响应涉及的一个突出问题是“引用漂移”:AI 生成的回答不再能从最初作为证据引用的网页中得到支持。也就是说,页面可能已经更改,相关文本可能已被删除,或者链接现在可能指向别处。

这项新研究发现,如果将所有 HTTP 200 响应都视为成功获取,而不论其中包含什么内容,表面上的引用漂移比例就会从 5.8% 升至 21.9%。

这意味着,CAPTCHA 验证码、空白页面或其他阻碍内容可能取代了原始材料并被获取,结果导致人们错误地认为某个来源已经更改、消失,或不再能为 AI 生成的主张提供支持。

只管说它存在!

针对故意编造的不存在网址进行的测试,也证明了这一问题。向网站请求随机编造的路径时,作出响应的网站中有 13.1% 返回了 200(“正常”)状态,尽管请求的页面并不存在†。

“对随机路径探测作出响应的网站中,有 13.1% 返回了 200(S1 10.5%、S2 13.3%、S3 17.3%、S4 13.7%、S5 13.1%)。按定义,这类响应全都是软 404,但并非每个响应都会表明这一点。”

“在对 172 个软 404 响应进行的探索性分类中,标注人员将 98 个归为错误或替代页面,32 个归为框架页,28 个归为内容页:在随机路径下呈现的主页或列表页,看起来就像普通页面。”

结论

如果能在更高层面上识别这一问题,IANA 或许可以设立一个新的、更加贴切的 HTTP 状态码,例如 [X] (“请求已成功,但未提供所请求的内容”)。这确实能描述实际发生的情况,但自然也要求主机端对事务有非同寻常的洞察力,而这不太可能实现。

虽然已有一些类似的状态码,但都不太适用:451(“因法律原因无法提供”)含义模糊,而且相当令人不安(!);206(“部分内容”)从技术角度看很贴切,但它原本用于不完整的数据(获取);而令人意外的是,竟然还存在 203(“非权威信息”)这一状态码,它创建于 1997 年,与眼下的使用场景只有间接关联。

或许最接近的候选项其实是名称不太直观的 103(“早期提示”),它表示该 URL 的资源尚未全部加载完成(不过,这显然会严重曲解该状态码的本意)。

 

* 题为《当 200 OK 并非答案:智能体式网页内容获取中的静默抓取失败》。请注意,这篇论文显然主要是为机器读取而写,或许是为了供 AI 查询;论文自身并不容易读懂。

†抱歉引用这种机械化的表述,但正如我上文所说,整篇论文都采用这种写法,旨在便于“机器读取”,而非供人理解;不过,它还没有采用 JSON 格式。

首次发表于 2026 年 11 月 4 日,星期三

机器学习撰稿人,专注于人类图像合成的领域专家。曾任 Metaphysic.ai 的研究内容负责人,直至其并入 DNEG 的 Brahma.ai。
网站: martinanderson.ai
联系:martin@martinanderson.ai