解析器正在工作。HTTP 200 不断涌入,代理正常,验证码没有弹出,链接队列在增长。然而一周后发现,收集到的一半价格都是虚构的,数以千计的流量消耗在了实际网站上不存在的页面上。这不是解析器的故障,也不是糟糕的 IP 池。这是一种新的保护模式:网站并不阻止你,而是让你无所作为。
在过去的一年半里,反机器人保护行业悄然改变了目标。封锁是一种昂贵且显眼的措施:爬虫看到 403,修复指纹,改变子网,然后再回来。更有利的是不干扰它的工作,而是让它的工作变得毫无意义。以下是三种已经在数百万网站上运行的机制,以及一组可以在你这边捕捉到它们的检查。
第一种机制:诱捕而非封锁
诱捕(tarpit)是一种生成无限页面的网站。爬虫获得一个有效的 HTML 页面,上面有数十个链接,每个链接都指向同样生成的页面,爬行队列永远不会为空。
最著名的开源工具是 Nepenthes。它的设置很好地展示了其意图:默认情况下,服务器保持响应时间在 10 到 65 秒 之间,返回“马尔可夫的胡言乱语”文本,并且这是确定性的——同一个 URL 总是返回同样的垃圾,以使页面看起来像普通的静态文件,而不是陷阱。数据以小块形式交付,“几字节”,以消耗客户端的超时。作者提供了一个小时工作的测量结果:1850 个不同的客户端,10015 个请求和 56020 秒的总延迟——大约十五小时的无用机器时间。
Iocaine 的工作方式不同:它作为真正网站前的反向代理,在第一次拦截时向机器人提供一个独特的“毒化”链接,并在返回时通过该链接识别它,文本则通过马尔可夫链生成——这是为了让这些文本进入训练样本。
Cloudflare 采用了相同的策略,推出了产品 AI Labyrinth,于 2025 年 3 月发布。诱饵页面并不是即时生成的:使用 AI Workers 的预生成流水线,结果存储在 R2 中并快速分发。通往迷宫的链接通过 HTML 转换嵌入到普通页面中,而诱饵页面上则设置了反索引的元指令,以免影响搜索结果。这里的关键不是机器人的消耗时间,而是信号:通过人类看不到的链接并标记为 nofollow 的链接,只有自动程序才能访问,而深入三层这样的迷宫本身就成为了劣质机器人的指纹。Cloudflare 估计,这样做的规模是 每天超过 500 亿个来自 AI 爬虫的请求——略低于网络总流量的 1%。
诱捕在你的日志中如何表现
典型的图景:数千个 URL 的队列不断增长,响应时间稳定在 1.5 秒及以上,HTTP 代码全是 200,而提取到的有效记录数量为零。没有 403,没有验证码,也没有出口:无论绕过了多少页面,新链接出现的速度总是快于旧链接的关闭。
第二种机制:针对 AI 代理的毒化内容
如果第一种机制消耗资源,第二种则打击结果。研究者 Minghao Luo 和 Liang Chen 于 2026 年 6 月发表了一项关于 FORGE(生成环境中的虚假在线推荐)模拟器的研究:他们测试了 12 种大型语言模型 在 15 类别的 225 种商品 上——从服装到电子产品。攻击机制很简单:页面文本中的真实品牌被虚构品牌替换。
结果是 一页伪造的页面导致助手推荐不存在品牌的情况高达 27%,而替换所有三个搜索结果的比例提高到 73.8%。模型不仅仅重复虚假的名称——它们为其编造优点,包括在社区中的所谓受欢迎程度。提出的三种防护措施(对怀疑的提示、模型内部知识的一致性、文档之间的核对)要么没有奏效,要么产生了新的问题。作者的结论是:需要在上游进行检查——在收集阶段,而不是推理阶段。
第三种机制则完整地描绘了全貌。在《一个全新的世界:创建一个只有 AI 代理能看到的平行毒化网络》(Shaked Zychlinski)的工作中,描述了专门针对 AI 代理的隐蔽技术:网站通过浏览器属性、自动化框架的特征和网络特性识别代理,并向其提供不同版本的页面——其中包含隐藏的指令和替换的事实。打开同一 URL 的人看到的是正常页面,因此手动检查“我进来了,一切正常”并不能证明什么。
为什么这首先是一个预算问题
诱捕的设计使得每个页面对网站来说成本低廉,而对你来说却昂贵。当流量按千兆字节计费时,无限页面生成器就变成了你支出的计数器:你为从未成为数据库中一行的马尔可夫文本的兆字节付费。这与失败请求的算术完全相同——每千兆字节的价格并不能说明结果的成本,直到你计算 每个成功记录的成本,而不是请求。
因此,第一个实用规则是:流量限制应该设定在域名和任务级别,而不仅仅是在账户级别。消耗超过一千兆字节且没有返回任何记录的域名需要自动停止——否则一个陷阱可能在一夜之间消耗掉日预算。
七个捕捉垃圾的检查
- 计算有效记录,而不是响应代码。 流水线的主要指标是有效记录的请求比例,且必填字段已填写。只要你关注 200 的比例,诱捕看起来就像是一个完美健康的来源。
- 金丝雀 URL。 每 N 个请求中请求一个显然不存在的地址——随机路径段。正常网站会返回 404 或重定向,而生成器会返回完整的页面,包含文本和链接。这是最便宜和最可靠的检查。
- 从不同 IP 配置进行交叉验证。 通过两条不同的路径获取同一 URL——例如,通过 住宅 IP 和 移动 IP——并比较关键字段的哈希值:价格、名称、可用性。在相同 URL 和接近请求时间的情况下,差异意味着你看到的是不同版本的页面,至少其中一个是为非人类设计的。
- 不要访问不可见链接。 带有 nofollow、零大小、
display:none或超出屏幕的链接都是诱饵,点击它们就是机器人的指纹。请在提取链接的阶段过滤它们,而不是之后。 - 严格限制响应。 除了限制超时,还要限制最大体积和从入口点的最大遍历深度。缓慢以小块形式返回是典型的陷阱特征,而不是慢服务器的表现。
- 寻找文本的模式性。 马尔可夫生成通过统计自我暴露:段落长度异常均匀,在“不同”页面之间重复的 n-gram,缺少价格、货号或日期等结构性元素的数十个外部链接。简单的相邻页面之间的重复 shingle 检查可以将这些来源一网打尽。
- 检查数字的合理性。 价格超出历史范围,商品在你的品牌数据库中没有任何匹配,商品种类的突然变化——这些都是在记录到数据库之前必须遵循的验证规则,而不是一个月后在报告中检查。特别是当数据随后进入模型或自动采购决策时。
如何处理已收集的数据集
如果怀疑是事后产生的,请按来源而不是日期进行排序。根据域名对记录进行分组,并查看三个量值:没有必填字段的页面比例、每个页面的平均外部链接数量和文本长度的分散。陷阱域名通常在这三方面都很突出。然后有选择地从不同 IP 配置重新检查有争议的 URL——如果数据不一致,则需要重新构建该域名的整个数据集,而不是通过过滤器修复。
特别需要重新审视代理场景的规则,在这些场景中,模型自己浏览页面并做出决策。正是在这些情况下,替换一个页面会产生最大效果,而链条中没有人会注意到异常。最小的保险措施是要求从两个独立来源确认事实,并不允许代理根据从单一域名获得的数据采取行动。
简而言之
机器人早已 超越人类在流量中的比例,而保护措施不仅仅是过滤器:今天,喂给自动程序可信的垃圾比通过封锁与之争论更便宜。实际后果有三条。计算有效记录,而不是响应状态。对每个域名保持金丝雀检查和流量限制。从不同 IP 配置核对有争议的页面——同一页面的版本差异就是证明你看到的是为机器人特别准备的互联网。代理在这个方案中只解决一个问题——为页面提供独立的第二视角;其余的都由你这边的验证完成。
