Decoy Font:用字体设计给 AI 爬虫下毒——对抗数据掠夺的逆向工程

Decoy Font:用字体设计给 AI 爬虫下毒——对抗数据掠夺的逆向工程

Decoy Font反AI爬取字体设计数据中毒对抗性攻击机器学习

数据源:HN + web research · HN

打开 Mixfont 的 Decoy Font 演示页,你会看到一行字。凑近看,每个字母由清晰的描边轮廓构成,文字写的是「SORRY ROBOT」。退后几步,或者眯起眼睛,同样的画面里浮现出另一行字:「HAPPY HUMAN」。同一张图,两套信息,分别投递给人类视觉和机器视觉。

这就是 Decoy Font 的核心机制:一种利用空间频率差异在同一个字体字形中编码两条消息的 TTF 字体。

技术原理:借用人眼与机器的频率差

Decoy Font 的底层技术来自计算机视觉领域一个已被充分研究的概念——混合图像(hybrid images)。这项技术最早由 MIT 的 Aude Oliva 和 Philippe Schyns 在 2006 年提出,最著名的示例是将爱因斯坦和玛丽莲·梦露的照片叠加:近看是爱因斯坦的锐利轮廓,远看则变成梦露的柔和面孔。

混合图像经典示例:近看爱因斯坦,远看梦露

技术实现上,混合图像将两幅图片分别做频率分离处理:对图像 A 提取高频分量(锐利边缘、细节),对图像 B 提取低频分量(模糊色块、大尺度明暗),再将两者叠加。人眼在不同观看距离下对空间频率的敏感度不同——近距离时高频信息占主导,远距离时低频信息接管感知。

Decoy Font 将这套逻辑搬到了字体设计上。每一个 glyph(字形)同时承载两个字母的形态信息:前景以细描边勾勒出一个字母的轮廓(高频),背景以模糊的低频色块暗示另一个字母的形状。字体的视觉表现取决于观看条件——缩放比例、距离、甚至观看角度。

一个关键的不对称性在此发挥作用:当前主流的多模态 AI 模型(GPT-4o、Gemini 等)在处理图像中的文字时,倾向于聚焦于像素级别的高频信息——也就是描边轮廓——而非人类在整体观感中自然捕捉到的低频模式。这使得 AI 读到的永远是「假消息」(decoy),而人类在合适的观看条件下能读出「真消息」。

Mixfont 在页面上展示了实际测试结果:将 Decoy Font 生成的图片分别输入 ChatGPT 和 Gemini 3.5 with Thinking,两者都将画面中的文字识别为「BINGE SHOWS」——即 decoy 文本,而非隐藏的「HAPPY HUMAN」。当截取一段用 Decoy Font 排版的文本截图输入 ChatGPT 时,模型同样无法正确读取真实内容。

ChatGPT 将 Decoy Font 文字识别为 BINGE SHOWS

它是什么,以及它不是什么

Decoy Font 是一个 TTF 字体文件,可以下载安装并在任意文本编辑器中使用。它的 letterform 派生自 DejaVu Sans Mono,免费用于个人和商业项目。但需要明确的是:它不是在网页 HTML 层面工作的——当文字以 HTML 文本形式存在时,AI 爬虫直接抓取 DOM 或 API 响应中的字符串即可获得准确内容。屏幕阅读器也依赖这一层获取文本。Decoy Font 只在图像化之后才发挥作用——当内容被渲染为图片、截图、或任何光栅化形式时,频率分离的视觉错觉才会被激活。

这一点很大程度上定义了它的应用边界。它不是一个能阻止大规模网络爬取的方案,因为爬虫通常处理的是结构化文本数据而非渲染后的像素图。它的适用场景更接近:在将文字转为图片发布时(社交媒体卡片、信息图、meme 模板),为 AI 的 OCR/视觉模型提供干扰信号。

社区争议:艺术还是武器?

Decoy Font 在 Hacker News 上引发了激烈讨论(493 points, 117 comments),评论大致分为几个阵营。

「它很酷,但没用」派。用户 OsrsNeedsf2P 的评论被顶到最高:「有用吗?不。能阻止 AI 阅读吗?也不。但酷吗?非常酷。」这条评论获得了大量认同,也引出了后续讨论的核心张力:当作者声称一种技术能对抗 AI 时,社区的第一反应是检验实用性,但最终接纳它的理由往往是美学和趣味性。用户 jszymborski 进一步指出:「这说明你可以做一些东西,不宣称它有用——比如直接叫它『双关字体』(double-entendre)之类的。」nine_k 则回应:「做一件有趣或酷的东西而不宣称任何实用价值,通常被称为艺术。」

「AI 已经能读」派。多条评论指出,当用户在 prompt 中提示「还有一个隐藏信息」时,GPT 5.6 Sol 能正确读出隐藏消息,Gemini Flash 也能同时识别两层文字并给出阅读指引。用户 voidnullvalue 甚至发布了一个 skill.md,声称可以「轻松读取这种字体」。这些案例暗示,当前模型的「失败」更多是因为默认行为聚焦于高频信息,而非根本性的能力缺失。一旦模型被针对性地训练或提示,这种防御会迅速失效。

「对人类也不友好」派。多位用户抱怨自己读不出隐藏消息。amarant 写道:「这个页面的效果是:阻止不了 AI,但能阻止我。」LoganDark 表示:「在大多数示例中,我分不清描边消息和模糊消息哪个才是我应该读的。」还有用户指出暗色模式下效果不同——在深色背景上只能看到 decoy 文字。这些反馈将问题引向一个更深层的矛盾:如果防御工具对攻击目标(AI)效果有限,却对防御对象(人类)造成了显著的使用摩擦,那么它的净效益值得重新评估。

「这是一个有用的方向」派。也有部分用户看到了更长远的意义。一条评论认为:「它可能不是终点,但可能是通向某个真正有用之物的中间站。」在 AI 公司大规模抓取网络内容作为训练数据的背景下,任何增加抓取成本或降低数据质量的手段都有其存在逻辑。Decoy Font 的代表性体现在它展示了「用设计反击数据掠夺」这一思路的技术可行性——它与当下的实际效果无关。

数据中毒的逻辑与边界

将 Decoy Font 放置在更广阔的「反 AI 数据中毒」语境中观察,会发现它属于一类独特的策略:它绕过传统的训练数据篡改(如 Nightshade 项目)和访问控制(robots.txt、付费墙),直接利用感知层面的认知差异,让自动化的数据采集管道摄入低质量甚至错误的信息。

这类策略的理论基础是:如果 AI 爬虫足够大规模地抓取网页,那么即使只有一小部分内容采用了频率分离的混淆技术,也会在训练语料中掺入噪声。当噪声积累到一定程度,可能影响模型在特定任务(尤其是 OCR 和视觉文本理解)上的表现。

但这一逻辑链条上的每一个环节都附带了前提条件。前提一:Decoy Font 的使用规模需要足够大,才能产生统计意义上的影响。前提二:AI 公司在数据清洗和预处理阶段不会过滤掉这些异常文本——考虑到当前主流训练管线中已经包含了大量的数据质量检测步骤,这个假设未必成立。前提三:模型训练过程中不会针对性地学习绕过频率分离技巧——而一旦这种字体被广泛认知,将其纳入对抗训练几乎是必然的。

HN 上一条评论精准地总结了这种不对称性:「任何在不同频段传输不同消息的方案,都会受到同一种攻击——降采样本质上就是低通滤波。」换句话说,AI 只需要对图像做一次缩小操作,高频的描边轮廓就会消失,低频的隐藏文字就会浮现。这条技术路径的破解成本远低于其构建成本。

光学错觉的传统与当代挪用

Decoy Font 真正的价值可能体现在另一个维度:它重新激活了一条被遗忘的设计传统。混合图像错觉在认知心理学中已有近二十年研究历史,但将其系统性地应用于字体设计并打包为可用 TTF 文件,仍然是新的。

Mixfont 在此之前还发布了另一个项目 Ghost Font,利用动画中点的运动轨迹来编码隐藏信息。Decoy Font 是这条探索路径的延续,从动态走向静态、从视频走向可安装字体文件,降低了使用门槛。这两个项目共同展示的,是字体设计作为一种「对抗性媒介」的可能性——在传统的信息传达功能之上叠加第二层信息通道。

用户 nine_k 关于「艺术」的判断或许是本文最准确的定位。Decoy Font 的意义体现在它迫使观看者在两个信息层之间切换注意力,意识到同一幅图像中存在多重解读——这种体验本身就是一种对自动化信息处理逻辑的审视。

限制与诚实

有几个技术限制需要诚实呈列:

文本复制粘贴直接穿透。如前所述,只要内容以文本形式存在,Decoy Font 就无能为力。AI 爬虫读取的是 HTML 源码或 API JSON,而非屏幕渲染结果。

图像处理可绕过。降采样、低通滤波、甚至简单地将图片缩小再放大,都能剥离高频描边层,暴露低频隐藏层。用户可以通过 img2img 或传统图像处理库(PIL/OpenCV)轻易实现。

可访问性问题。视觉障碍用户依赖的屏幕阅读器读取的是底层文本数据而非字体渲染结果,Decoy Font 本身不会破坏可访问性——前提是内容提供者同时保留了文本通道。但如果内容仅以图片形式存在且未提供 alt 文本,则会对视障用户构成障碍。

模型可被提示绕过。多条 HN 评论和 Mixfont 自己的测试都表明,当明确提示模型「寻找隐藏文本」时,部分前沿模型能够识别甚至解释双层信息的机制。

本文的素材来自公开信息和社区讨论。如果你对这个话题有更深入的一手经验,欢迎指出文中的不足。

参考链接:

  • Decoy Font(Mixfont 官方实验页)
  • HN 讨论:Decoy Font
  • Wikipedia:Hybrid image(混合图像技术)
  • Ghost Font(Mixfont 另一个反 AI 字体实验)