2025 年 3 月 25 日:伪造 JPEG
- 作者一直在推特上谈论 Spigot 应用,它利用马尔可夫链生成虚假网页层次结构,每天服务超过一百万页面,作者偶尔查看其日志了解爬虫行为。
- 有两个最难缠的爬虫隐藏身份,可能通过僵尸网络非法滥用他人设备,作者会将识别出的重爬虫添加到 Spigot 首页列表中。
- 两周前发现新重爬虫“ImageSiftBot”,因 Spigot 无图像输出却被频繁访问,作者开始思考如何满足它,想到利用 JPEG 压缩原理生成假 JPEG 图像。
- 研究 JPEG 文件结构后,作者扫描自己网站上的 514 个 JPEG 文件,保留“结构化”块和“像素数据”块长度,得到 514 个模板。
- 生成 JPEG 图像的代码逻辑是随机选择模板,根据块类型输出数据,填充像素块时遇到问题,发现真像素数据不是完全随机的而是霍夫曼编码有结构,作者未深入研究。
- 用上述代码生成的图像能被浏览器显示,虽解码器有问题但仍能输出像素数据,可增加爬虫成本,目前 Spigot 约 60%页面有垃圾 JPEG,ImageSiftBot 很喜欢,Meta 的 bot、AmazonBot 和 GPTBot 也兴奋起来。
- 作者需整理代码并将其发布在 GitHub 上,目前约 100 行代码(可添加更多注释)。
- 2025 年 3 月 26 日:已在 GitHub 发布。
- 2025 年 3 月 28 日:考虑霍夫曼编码后,添加位掩码,将生成的像素数据与 0x6D“与”运算,减少生成无效霍夫曼码的概率,从>90%降至<4%,重点是使生成垃圾图像对自己成本低对滥用爬虫成本高。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。