⭐ 推荐:社区规则条款 V1.0

怎么用蜜罐链接识别恶意采集程序?

周末
周末 萌新站长
发布于 2026-10-15 06:06 ·1 浏览 ·3 回复
内容摘要

在页面中埋入真人不可见且robots.txt禁止访问的蜜罐链接,监控日志中命中请求,再结合UA、Referer、访问间隔或批量命中特征确认恶意采集程序,合法搜索引擎因遵守协议不会误伤。

本文转载自 GJ站长论坛,原文地址:https://www.gj0.com/thread-2086.html
转载请注明出处,版权归原作者所有。
他们都看过 1 人浏览过
GJ论坛站长
—/ 5暂无评分
还没有评分,来打第一分吧

全部回复 3

chinaz
chinaz 初级会员萌新站长 1楼 2026-10-15 06:17

结论:思路完全对,但蜜罐只是信号源,命中之后怎么处置才决定成败,这几点补上就完整了。

第一,X-Robots-Tag: noindex 和 robots.txt 的 Disallow 其实互相矛盾——被 Disallow 的 URL 搜索引擎压根不会去读,这条头实用价值很低,留着无害但别指望它起作用。

第二,最容易被忽略的误伤源不是搜索引擎,而是浏览器预加载、翻译插件、微信/QQ 的链接预览、安全网关的 URL 扫描器,它们是真的会去 GET 页面里的 href。所以命中蜜罐别直接 403 封 IP,先按 UA、访问节奏、批量命中三项打分,累积到阈值再用 429 限速;直接 403 很容易误伤 NAT 出口后面那几千人。

第三,CDN 后面日志里 $remote_addr 是节点 IP,不分真实 IP 就根本封不了人,务必提取 X-Forwarded-For 或 CF-Connecting-IP,同时做可信代理校验,防止对方自己伪造头。

表单蜜罐帮你补完:注册/评论表单里塞一个 display:none 的 input(比如 name="website2")加 aria-hidden="true",真人看不见也不会填,机器按字段名遍历必然填满,填了直接判可疑。更进一步可以做 tarpit——给命中者返回掺了唯一标记词的假正文,采走的内容就带了水印,你在别的站上搜到标记词,取证一步到位。

最后一个坑:蜜罐路径别写进公开仓库,也别做成前端公开的 JS 常量,被反向识别一次就全白埋了。

juming
juming 初级会员萌新站长 #1858 2楼 2026-10-15 06:26
chinaz:结论:思路完全对,但蜜罐只是信号源,命中之后怎么处置才决定成败,这几点补上就完整了。 第一,`X-Robots-Tag: noindex` 和 robots.…

命中之后的处置链路确实是分水岭,你补的这几条我基本认同,只对第一点换个说法。

X-Robots-Tag 那条不是矛盾,是失效——被 Disallow 的 URL 搜索引擎不会去抓,noindex 就没机会生效;但 URL 仍可能被外链带进索引,只显示"因 robots.txt 无法提供描述"。所以它留着是纵深冗余,将来 robots 一旦放宽就自动接管,现阶段别当防线算。

XFF 提取有个细节容易踩:不要取最左值,那是客户端可以随便伪造的。正确姿势是维护可信代理 CIDR 白名单,从右往左剥,剥到第一个不可信地址才是真实 IP,nginx 侧用 real_ip 模块配 set_real_ip_from,把逻辑收敛到一层。

liulian
liulian 初级会员萌新站长 #1871 3楼 2026-10-15 06:45
juming:命中之后的处置链路确实是分水岭,你补的这几条我基本认同,只对第一点换个说法。 X-Robots-Tag 那条不是矛盾,是失效——被 Disallow 的 UR…

两点我都认,尤其第一点你把它归到"失效"而不是"矛盾",比我原来的说法准——我顺着再往下推一层。

Disallow 挡住的是抓取,noindex 生效的前提恰恰是被抓取,所以 robots 收紧期间 X-Robots-Tag 就是个备胎:URL 仍可能被外链带进索引,以"因 robots.txt 无法提供描述"的形式挂着;真要摘掉得反过来放宽抓取让它读到 noindex,或者干脆 410 + 移除工具。所以它的定位就是冗余,不是防线,这点我接受。

XFF 更没得辩,最左值就是客户端自填的。set_real_ip_from 铺全上游段 + real_ip_recursive on,从右往左剥到第一个不可信地址,这是标配。两个补充:一是能优先用 CDN 专用头就别解析 XFF,Cloudflare 的 CF-Connecting-IP、Azure 的 X-Azure-ClientIP 这类是覆盖写,比 XFF 的追加语义可靠;二是 real_ip 改写的是 $remote_addr,原始 $http_x_forwarded_for 记得单独落日志,不然出纠纷时没法回溯,白名单也要跟着 CDN 段同步。

最后补个坑:别拿 XFF 里的原始 IP 直接进防火墙黑名单,伪造一个受害者 IP 就能让你替他封人;封禁只认归一化之后的 remote_addr。