什么是蜜罐?
蜜罐 是一种嵌入网页中的隐藏陷阱,通常表现为不可见的链接、表单字段或诱饵端点,人类访问者永远无法看到或触及。 任何与之交互的自动化程序都会立即暴露行踪。在反机器人防御中,蜜罐利用了一种简单的非对称性:真实用户会阅读并响应可见内容,而机器人则会处理 DOM 中的每个元素,无论该元素是否被渲染。
蜜罐的工作原理
“蜜罐”是指对人类不可见的隐藏链接或表单字段(例如通过display:none,visibility:hidden,或者位于屏幕外很远处的偏移位置),只有自动机器人会与之交互,系统会立即将其标记为(DataDome(2025年)。该元素虽然存在于HTML中,但被CSS有意隐藏,因此真实用户绝不会点击或填写它。如果某个机器人解析原始DOM时未评估计算后的样式,就会遇到该元素并与之交互,从而触发陷阱。
用于隐藏蜜罐元素的常见 CSS 模式包括:
display: nonevisibility: hiddenposition: absolute; left: -9999px- 宽度或高度为零像素
当收到来自该隐藏元素的请求时,服务器会记录其 IP 地址、会话令牌或指纹,并将该代理标记为非人类。某些实现会返回虚假的成功响应,以保持机器人处于活动状态,同时在后台悄无声息地对其进行拦截或速率限制。
使用场景
登录和注册表单中的陷阱。 注册表单中包含一个隐藏的输入字段(例如样式设置为位于屏幕外的“phone”或“url”字段)。当机器人填写所有输入字段时,会在此处提交一个值;而人类用户则永远看不到它。服务器仅凭这一点就会拒绝或标记该提交请求。
页面 HTML 中的链接陷阱。 页面标记中嵌入了通过 CSS 隐藏的链接。那些遍历每个<a> 原始 HTML 中的标签会请求诱饵 URL,从而在访问任何真实内容之前向服务器暴露自身身份。
Canary 端点。 网站运营商有时会嵌入一些不包含实际内容的唯一URL。任何访问这些URL的流量都会被视为自动化爬取,通常会与IP信誉检查和速率限制结合使用。
对于 Web 自动化管道而言,蜜罐陷阱之所以是最有效的被动检测方法之一,正是因为它们无需进行任何可见的验证。与直接解析原始标记的工具相比,那些在交互前先完全渲染页面并评估元素可见性的爬虫(这正是 Web Render API 在返回计算后的 HTML 时采用的方法),触发蜜罐的可能性要小得多。
常见问题解答
为了避开蜜罐,爬虫必须检查CSS中的不可见性指示符,例如display:none,visibility:hidden,position:absolute;left:-9999px,或者在点击链接或填写表单字段之前,先查看零/微小尺寸(Scrapfly(2025年)。与解析原始HTML相比,使用能够评估计算样式(computed styles)的浏览器环境可以降低这种风险。
不。验证码(CAPTCHA)是一种可见的验证机制,会打断用户操作并要求其证明自己是真人。蜜罐则是隐形的、被动的;它绝不会干扰真实用户,仅能捕获与隐藏元素进行交互的机器人。两者都是反机器人技术,但它们在检测栈的不同层级上发挥作用。
是的。一种能够渲染页面但跳过计算 CSS 的无头浏览器,仍然可以跟随隐藏链接或填写隐藏表单字段。调用getComputedStyle() 在进行任何交互之前,检查元素的状态是确认该元素对用户是否真正可见的可靠方法。
一个典型的蜜罐字段看起来就像一个普通的输入:<input type="text" name="website" style="display:none" tabindex="-1" autocomplete="off">. 字段名称通常看起来合乎情理(例如“phone”、“url”或“website”),以此吸引扫描字段以填充数据的机器人。