加载失败
作者回忆在约 2009 年运营一个免费、无广告的讨论区时,遭遇社媒监测服务大规模抓取并消耗主机资源,先后封 UA 与 IP,最终用基于帖 ID 的伪随机注入品牌名来污染抓取数据并迫使其停止。评论把这个做法带到 2025 年的现实场景:有人在 fediverse(使用 ActivityPub 的联邦社交协议)上遇到忽视 robots.txt 的爬虫,通过分析 HTTP headers(如 Accept‑Language/Accept‑Encoding)并在 nginx(常用反向代理/网页服务器)配置规则来阻断流量;也有人讨论用 Nepenthes(tarpit 工具)、decoy.zip、zip bomb、或 fail2ban/crowdsec(日志封禁工具)等策略。讨论同时分为两条线:一条把流量视为内容抓取并主张投毒反制,另一条认为很多请求是漏洞探测并更适合用行为封禁;并伴随对抗演化与可能遭遇搜索引擎或门控者误判的担忧。
原帖和多位评论者描述通过投毒与拖钓来耗尽抓取器价值和资源。作者曾用基于帖 ID 的伪随机注入公司名来污染社媒监测服务的信号并迫使其把站点加入 denylist;其他人补充了对批量测试信用卡返回随机成功/失败、用 htaccess/decoy.php 强制下载大体积 decoy.zip、或用 Nepenthes 慢速 drip‑feed 的实战做法。还有人建议用 Markov babbler 或小型自托管模型生成垃圾文本、或在 Traefik 插件中把恶意 UA 导向垃圾生成器以污染训练数据。评论同时提醒这些方法并非万无一失:有些 bot 会无视 zipbomb 并迅速切换 IP 与策略,且投毒可能带来搜索引擎误判的风险。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7]
多位人指出分析完整的 HTTP headers 比单看 User‑Agent 更可靠:常见迹象是伪装为旧版 Chrome 的 UA 但缺少 Accept‑Language 或 Accept‑Encoding。有人贴出 nginx 规则示例,把老 Chrome UA 与空 Accept‑Language 组合后返回 403,且有用户反馈该办法能迅速降低请求量。此类规则实现简单且低成本,适合抑制海量、低复杂度的抓取;但也有警告称有针对性的对手可以伪造完整头部以规避这类检测。
一部分评论强调大量对 .php、wp‑login 等路径的请求是指纹探测或漏洞扫描,它们主要看响应码而不读取响应体。基于这种行为,建议使用 fail2ban 或 crowdsec 这类基于日志和行为的封禁工具来检测并短期封锁探针;评论中提及 crowdsec 本地默认封禁约 4 小时、Central API 的决定可能更长(例如约 6 天)。因此对付这类流量更靠规则与封禁,而不是期望通过输出欺骗性文件长期困住探针。
讨论普遍认为这是场长期的 cat‑and‑mouse:先屏蔽 UA、再封 IP、接着出现多 ASN 与住宅 IP 池,攻击方不断进化。有人建议不要 100% 拦截,而应按概率动作、抛出不同错误码或响应延迟以增加对方排错难度,并引用 Alan Turing 式的策略来降低被发现的概率。另有实际担忧:激进的欺骗或投毒可能触发搜索引擎或“门控者”的人工判定,导致站点被误判为垃圾内容,需要在阻断资源滥用与避免被误伤之间做权衡。
评论中存在价值与经济层面的冲突:有人认为公开信息应可被检索,但另有人指出当下的 AI/LLM 抓取不会带来访问量回报,反而将成本转嫁给内容提供者。旧式爬虫曾带来流量和可见性,但大型模型在不回馈流量的情况下训练,让许多创作者感到被剥削并倾向于更强防护或付费墙。该论题还扩展到广告拦截、创作者权利与伦理,许多评论认为 AI 的兴起正在改变过去“善意抓取”的默契。
robots.txt: 网站根目录的爬虫规则文件,用于声明哪些路径可被机器人抓取、哪些应被忽略;守规的爬虫会遵守,但恶意抓取常常无视。
User‑Agent: HTTP 请求头,用以标识客户端软件(浏览器/爬虫);很多简单防护依赖 UA 判断,但 UA 易被伪造,需配合其他头部分析。
HTTP headers(Accept‑Language / Accept‑Encoding): 完整的请求头集可用于指纹识别;评论中常见线索是 Accept‑Language 缺失或 Accept‑Encoding 不自然,这比单一 UA 更难伪装。
Nepenthes(tarpit): Nepenthes 是一个 tarpit 类工具,慢速滴流(drip‑feed)生成内容以拖住连接,目的是浪费爬虫或探针的时间与带宽。
zip bomb: 通过高度压缩的小文件在解压后膨胀成巨量数据来耗尽对方带宽或存储的攻击/防御手段;其效果依赖对方是否解压及采用的压缩算法。
fail2ban / crowdsec: 基于日志的主机入侵防护工具,自动根据规则封禁可疑 IP。crowdsec 还可通过 Central API 共享决策,评论提到本地默认封禁约 4 小时、中央决策可能更长(示例约 6 天)。
honeypot / decoy(decoy.php / decoy.zip): 伪装的文件或端点(蜜罐/诱饵),例如 decoy.php 流式输出假日志或 decoy.zip 强制下载大文件,用于迷惑探针并收集其行为特征。
HTTP 状态码 418 / 444: 418(I'm a teapot)常被用作幽默性的非致命阻断响应;444 是 nginx 特有的“直接断开连接”行为,不返回响应,能节省带宽但可能使负载均衡器误判后端不可用。
Markov chain / Markov babbler: 基于马尔可夫链的文本生成器,可廉价生成看似连贯的垃圾文本用于污染抓取器或训练集,成本远低于运行完整 LLM。