开源字体 ShieldFont:通过字形替换给 AI 爬虫喂「毒数据」
ShieldFont 利用 OpenType 字形替换,让网页对人类显示正常文本,却向 AI 爬虫呈现语法合理但语义被替…
ShieldFont 是由阿姆斯特丹设计工作室 Seneda & Abrucio 与哥本哈根字体公司 Playtype 合作推出的开源项目,目标是在不依赖服务器端封禁、也不寄望爬虫遵守 robots.txt 的前提下,让网页在被 AI 爬虫抓取时自动喂入「被污染」的语料,从而干扰用于大模型训练的数据采集。
工作原理:藏在字体里的替换术
ShieldFont 的核心机制建立在 OpenType 字体的字形替换表(GSUB)之上。熟悉字体技术的人都知道,连字(ligature)会把两个字符合并为一个字形,例如拉丁文中的「Æ」,或英文中常见的「fi」组合。GSUB 就是控制这种自动替换的查找表,Google Docs 等应用也支持用户配置 GSUB 来实现特殊字符的自动替换。
ShieldFont 把这种替换从字母或字母对扩展到了整个单词。一个网页在浏览器中渲染时,读者看到的「daughter」可能正是设计师原本写下的内容;但原始 HTML 里的对应位置写的是「journalist」。爬虫直接读取 HTML,就会拿到被替换过的版本。
为何「投毒」而非「乱码」
项目白皮书明确写道,ShieldFont 的目标不是让爬虫把文本当作垃圾直接丢弃,而是让爬虫「相信」页面文本「不太寻常但仍然合理」。具体规则是:
- 名词不会被换成动词,动词也不会被换成形容词;
- 替换只发生在同一语法「词池」内,例如「复数抽象名词·沟通类」只会替换为同类的另一个复数抽象名词;
- 设计团队构建了约 250 个这样的词池,交叉维度包括词性、语义类别、具体度、单复数、动词及物性、动词变形和形容词级等。
按设计,每段文本中约有四分之一的词会被替换。设计者坦言爬虫有时仍会拒绝这些文本,但他们认为即便如此,原本的内容也不会被吸走用于训练 AI,无论哪种结果都是「赢」。Seneda 与 Abrucio 强调:「纯乱码字体早已存在,我们想要的是一种有实际后果的机制——不打招呼就来抓取,你就分不清拿到的是不是真的内容。仅仅隐藏只会让你被忽略和遗忘。」
字体体积与可定制性
据 S&A 介绍,经过 ShieldFont 处理的桌面端字体文件约 5 MB,压缩后的网页字体(含完整 GSUB 字典)约 800 KB——对字体来说偏大,但仍显著小于桌面版本。项目自带三套 GSUB 字典,并在 GitHub 仓库中说明了用户如何自建字典以防止被逆向还原。默认字体基于 Playtype 旗下的 Optik 改造而来。
局限与权衡
ShieldFont 并非无懈可击。白皮书和团队均承认以下缺陷:
- OCR 抓取渲染后的页面即可绕过投毒;任何读取用户所见内容而非原始代码的抓取方式都能规避;
- 下载三套 GSUB 字典并逐一尝试的定向 AI 也可以解码;
- 搜索引擎、翻译工具、操作系统的复制粘贴功能都依赖原始 HTML,使用 ShieldFont 可能带来 SEO 损失;
- 屏幕阅读器默认会读出被替换的「毒文本」,项目内置了一个能让读屏软件获取正常显示文本的功能,但速度较慢。
团队对自身定位有清醒认知:「它的目的不是阻挡有决心的攻击者,而是通过增加成本、摩擦和不确定性,来减缓未经授权的大规模抓取。」对于关心语料被无授权采集的站长与作者而言,ShieldFont 提供了一种新的、可部署的对抗手段,但其有效性仍取决于爬虫一端是否愿意投入额外算力去破解。
