伪造一个 JPEG 图像。

  • 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%,重点是使生成垃圾图像对自己成本低对滥用爬虫成本高。
阅读 25
0 条评论