文章摘要
文章探讨了针对LLM网络爬虫的解决方案,提出了一种有效的HTML压缩炸弹(zip bomb),旨在通过耗尽爬虫资源来应对其不遵守robots.txt的侵略性行为。该方法利用压缩炸弹在分发与检测资源需求上的不对称性,试图最小化分发资源,同时最大化爬虫的资源消耗。
文章总结
标题:有效的HTML压缩炸弹
主要内容:
许多网站都受到了旨在提升大型语言模型(LLM)的网络爬虫的侵扰。虽然我的网站相对幸免,但自从这一现象开始以来,我一直在寻找解决方案。今天,我介绍了一种有效的HTML压缩炸弹(gzip和brotli格式)。
问题背景:
LLM网络爬虫的侵略性导致它们不遵守robots.txt文件。最初的解决方案是IP封锁,但爬虫通过使用专门的僵尸网络绕过这一限制。因此,另一种解决方案是耗尽爬虫的资源,通过压缩炸弹来耗尽它们的内存。
Gzip炸弹: 最基本的Gzip炸弹由零组成,理论压缩比为1032:1。然而,浏览器会迅速检测到这不是有效的HTML页面。因此,我挑战自己创建一个包含压缩炸弹的有效HTML页面。
HTML压缩炸弹: 我首先尝试使用HTML类,但最终选择了HTML注释作为解决方案。我编写了一个小脚本来创建一个包含10MB 'H'注释的HTML文件,然后将其压缩为Gzip格式,达到了1:1030的压缩比。
服务压缩炸弹:
我使用Nginx来提供预压缩的文件,确保服务器上不需要存储10GB的文件。通过配置Nginx的ngx_http_gzip_static_module模块,我成功地将压缩炸弹提供给支持Gzip编码的客户端。
结果:
Firefox和Chrome浏览器在加载该页面时都会崩溃,分别出现NS_ERROR_OUT_OF_MEMORY和SIGKILL错误。页面部分加载,标题正确,因此可以确定Selenium类型的网络爬虫会在此HTML文件上崩溃。幸运的是,没有发现可利用的安全漏洞。
未来改进: HTML注释的解决方案虽然有效,但可能不是最优雅的。未来可以探索更多方法来插入大量相同字符,以确保HTML解析器不会优化某些部分的读取。此外,我还创建了brotli版本的压缩炸弹,因为我的网站也支持brotli格式,且压缩炸弹在brotli中更为高效。
总结: 通过创建有效的HTML压缩炸弹,我成功地为网络爬虫设置了一个资源耗尽陷阱,同时确保了对合法爬虫的限制。这一解决方案虽然简单,但在应对LLM网络爬虫的侵略性方面表现出色。
评论总结
主要观点总结:
技术影响与兼容性:
- 部分用户报告了在不同浏览器和操作系统上的崩溃或错误。例如,Safari在macOS和iOS上出现了WebKit错误。
- "Crashed 1password on safari haha" (Safari崩溃了,哈哈)
- "Safari 18.5 (macOS) throws an error WebKitErrorDomain: 300" (Safari 18.5 (macOS) 抛出错误 WebKitErrorDomain: 300)
- 也有用户表示在Linux上的Firefox和Chrome中未出现崩溃。
- "Did not crash Firefox nor Chrome for me on Linux" (在Linux上,Firefox和Chrome都没有崩溃)
- 部分用户报告了在不同浏览器和操作系统上的崩溃或错误。例如,Safari在macOS和iOS上出现了WebKit错误。
反爬虫策略:
- 讨论了使用zip炸弹作为反爬虫手段的可行性,认为大规模爬虫可能会避免处理评论内容,但仍可能对其他HTML元素产生影响。
- "I can imagine the large scale web scrapers just avoid processing comments entirely" (我认为大规模爬虫可能会完全避免处理评论)
- "If the HTML itself contained a gigantic tree of links to other zip bombs that could also have an amplifying effect on the bad scraper" (如果HTML本身包含指向其他zip炸弹的巨大链接树,可能会对不良爬虫产生放大效应)
- 有用户分享了创建HTML zip炸弹的具体方法,认为嵌套的div标签也能达到类似效果。
- "I make my anti-crawler HTML zip bombs like this" (我这样制作反爬虫的HTML zip炸弹)
- 讨论了使用zip炸弹作为反爬虫手段的可行性,认为大规模爬虫可能会避免处理评论内容,但仍可能对其他HTML元素产生影响。
robots.txt的争议:
- 讨论了robots.txt文件的配置问题,认为许多配置不合理,且获取robots.txt文件可能会被标记为爬虫,增加了爬虫的复杂性。
- "For every 1 robots.txt that is genuinly configured, there's 9 that make absolutely no sense at all" (每有一个合理配置的robots.txt,就有九个毫无意义的配置)
- "GETing the robots.txt automatically flags you as a 'bot'!" (获取robots.txt会自动将你标记为爬虫)
- 讨论了robots.txt文件的配置问题,认为许多配置不合理,且获取robots.txt文件可能会被标记为爬虫,增加了爬虫的复杂性。
Cloudflare的处理方式:
- 提出了关于Cloudflare如何处理zip文件的疑问,是否会对未压缩内容进行缓存或直接缓存压缩文件。
- "If you try to do that on a site with Cloudflare, what happens?" (如果你在使用了Cloudflare的网站上尝试这样做,会发生什么?)
- 提出了关于Cloudflare如何处理zip文件的疑问,是否会对未压缩内容进行缓存或直接缓存压缩文件。
安全性与风险:
- 有用户提醒提交的链接并非zip炸弹,可以安全点击。
- "Note: the submission link is not the zip bomb. It’s safe to click" (注意:提交的链接不是zip炸弹,可以安全点击)
- 也有用户表示点击链接存在风险。
- "Risky click" (风险点击)
- 有用户提醒提交的链接并非zip炸弹,可以安全点击。
总结:
评论主要围绕zip炸弹的技术影响、反爬虫策略、robots.txt的配置争议以及Cloudflare的处理方式展开。部分用户报告了在不同浏览器上的崩溃情况,而另一些用户则分享了创建zip炸弹的具体方法。此外,robots.txt的配置问题引发了关于爬虫行为的讨论,而Cloudflare的处理方式也引起了关注。