Ars Technica 用「新武器」形容这件事:一种网页字体,能让人眼看到一句正常话,AI爬虫抓到的却是另一句话。骑马的牛仔,在爬虫眼里可能变成骑土豆的牛仔——整段话看起来语法通顺,意思全乱了,读者毫无察觉。
这确实是最近最好玩的技术花招之一。但往前翻两年会发现,这套思路一点都不新。2024年,工程师 Terence Eden 就做过几乎一样的开源项目"AI-resistant font",代码挂在 GitHub 上。他自己也承认了这套把戏的软肋:遇到肯做 OCR 或截图渲染的爬虫,照样穿。
人眼骗得过,认真扒的爬虫骗不过
原理不复杂:用字体连字(ligature)做手脚。正常连字是把相邻字母拼成更好看的样子,ShieldFont 和 Eden 的方案把这个机制拿来整词替换——屏幕渲染时显示正确单词,底层 HTML 源码里却是另一个词。爬虫如果只是download源码当纯文本读,拿到的就是被动过手脚的版本。
ShieldFont 把这套思路做得更系统:一个近12,000 词的替换词库,每个词有三套可选映射,平均替换掉页面24.5%的词、45.8%的实义词。作者在六套公开爬虫流水线上测试,超过90%的页面被质量过滤器直接拒收。
数字确实好看。但拒收率高不代表安全——被留下的那部分页面,近20%的词是作者自己定义的"训练期垃圾":语法正确、拼写无误、说的全是假话。对训练数据来说,这比整篇被丢掉更脏。
自曝软肋的老项目,才是这场戏的关键背景
Eden 的项目文档写得很直白:这套东西是"obfuscation",不是"access control"——混淆,不是访问控制。任何能做字体映射逆向、页面渲染截图、或者干脆上 OCR 的爬虫,都能把被打乱的文本还原回去。
这也是 ShieldFont 无法回避的天花板。原文自己给出的数据是:让爬虫从抓 HTML 纯文本改成先渲染页面再截图识别,成本会涨到5到13倍。这个倍数够不够劝退,取决于对面是谁。
对每天顺手扒几百万页面的爬虫来说,这个成本差可能真管用——不值得为了一批页面单独开渲染流水线。但对专门冲着高质量语料来的大模型公司,5到13倍依然算得过来账,他们要的正是"不被随便拿走"的那批内容。
- 风险.屏幕阅读器、搜索引擎索引、复制粘贴这类依赖底层文本的功能,同样会被这套混淧误伤,好心可能变成误伤真实用户。
挡爬虫的招法一直在升级,却始终没有底气
在这套字体戏法之前,站长们已经试过一整条谱系:robots.txt 靠自愿遵守,没有约束力;Cloudflare 的 AI Labyrinth 用虚假页面迷宫拖慢爬虫;开源的 Nepenthes 干脆挖"焦油坑"消耗爬虫资源。字体混淧是这条线上成本最低、门槛最低的一种——不用改服务器逻辑,一个 CSS 引用就能上线。
但便宜也是它的天花板。所有这些手段的共同处境是:没有一条能真正拦住不听话的爬虫,全靠增加对方的成本和麻烦。这更像老话讲的"上有政策,下有对策"——网站没有可用的法律或协议武器,只能各自琢磨小聪明,而这些小聪明的寿命,取决于对面愿意多花多少钱。
给人看真的,给机器看假的,是这场猫鼠游戏目前最便宜的解法。
Eden 两年前就把答案写在了自己的项目说明里:这是混淧,不是防护。ShieldFont 把它做得更精细,数字更漂亮,但没有改变这个判断。真正决定这类招法能撑多久的,不是词库有多大,而是 AI 公司愿不愿意为了内容多花那五到十三倍的钱——如果愿意,今天的乱码明天就会被还原;如果不愿意,这招就还能再苟一阵子。
