top of page

字型如何成為 AI 時代的內容防爬蟲工具

  • 4小时前
  • 讀畢需時 8 分鐘

網路上的字型原本只是顯示工具,設計師在意字體是否美觀,品牌在意辨識度,工程師在意載入速度,很少有人會把字型視為資料防護的一部分。到了生成式 AI 大量抓取網路內容的時代,這個角色開始發生變化。2026 年出現的 ShieldFont 就是一個很有代表性的例子,它利用 OpenType 的字形替換機制,讓瀏覽器畫面上呈現給人看的文字和 HTML 或 DOM 裡實際存在的文字不完全一致。一般讀者正常閱讀時幾乎感覺不到差異,但只擷取原始文字的 crawler 卻可能得到一份語法仍然合理而內容已經被改寫的版本。


這個概念最值得注意的地方不在於 ShieldFont 能不能真正擋住大型 AI 公司,而在於它把內容防護的問題從阻止對方取得資料改成讓對方必須花更多成本確認資料是否可信。過去網站對付爬蟲常見的方法是封鎖 IP 限制請求頻率 CAPTCHA robots.txt 登入牆或 paywall,核心思路都是在入口增加阻力,但這些方法不是容易被繞過,就是會一起傷害正常使用者。ShieldFont 採取的方向不同,它不一定阻止 crawler 進來,而是讓 crawler 即使成功取得資料,也不能立刻確定自己取得的是不是原文。這種差異對大量低成本抓取整個網路的 AI 資料蒐集模式特別重要。


這條技術路線比生成式 AI 更早出現


利用字型讓人和機器讀到不同內容並不是 2026 年才有的新發明。2015 年的 TuringFonts 已經用過類似概念保護 email 和電話號碼等資訊,網站原始碼裡的字元經過替換,再透過特製字型重新顯示為正確內容,讓人看得懂,spambot 卻不容易直接取得真正資料。這類做法後來證明並非無法破解,只要累積足夠資訊,分析字型檔或建立字元 mapping,仍然可以反推出真正內容,但它已經建立了一個重要前提,網頁原始碼所儲存的文字不一定等於瀏覽器真正顯示的文字。


更接近商業實務的案例是中國的貓眼電影。至少從 2016 年開始,貓眼就曾經在票房頁面使用 custom web font 保護數字,HTML 裡不是直接放正常的票房數字,而是以 Private Use Unicode codepoints 表示,再由瀏覽器下載字型,把這些 codepoints 顯示成真正的數字。一般使用者看到的票房完全正常,但直接抓 HTML 的程式拿到的卻是一串難以判讀的特殊字元。這套技術後來一樣被開發者破解,方法包括下載字型 分析 glyph 形狀 建立 codepoint 與數字之間的對照表,甚至針對網站反覆更換字型的做法設計自動化辨識。


表面上看既然最後都能破解,這些技術似乎沒有太大意義,但實際的商業邏輯並不是如此。網站防爬蟲從來不需要做到絕對無法破解,只需要改變對方的成本。原本只要發送 HTTP request 和解析 HTML 就能完成的工作,如果變成還必須下載字型 分析 mapping 執行 JavaScript 或實際 render 頁面,每取得一批資料就多了一層成本。對只抓一個網站的人來說,這點工程量可能不算什麼,但對需要同時抓幾十萬甚至幾百萬個網站的大規模資料蒐集者來說,差異就開始被放大。


ShieldFont 讓機器看到的是錯誤但合理的文字


早期像貓眼這類技術主要目標仍然是讓 crawler 看不懂。ShieldFont 更進一步,它嘗試讓機器看得懂卻看錯。這個差異看似只是技術細節,實際上卻碰到 AI 訓練資料最敏感的問題。假設 crawler 抓回去的是一串亂碼,後面的資料清理流程很容易判斷這頁有問題,直接把它丟掉,但如果抓回來的是文法正常 詞性合理 句子結構完整的文字,資料品質系統就未必能立刻發現異常。


ShieldFont 的設計因此不是簡單把所有字元隨機替換,而是盡量維持語法上的合理性。名詞換成其他名詞,動詞換成其他動詞,形容詞和副詞也各自在相對應的詞群中替換,讓原始碼裡的句子仍然保有表面上的可讀性。真正的原文則在瀏覽器載入字型之後透過 OpenType substitution 重新呈現,於是同一個網頁同時存在兩層內容,一層是機器容易抓取的文字,一層是人真正看到的文字。


這件事讓 ShieldFont 從一般 anti scraping 開始跨進 data poisoning 的領域。傳統防爬蟲想的是怎麼不讓資料被拿走,ShieldFont 則接受資料可能會被拿走,但希望降低它被直接再利用的價值。對搜尋引擎而言錯誤資料可能造成索引問題,對 RAG 系統而言可能造成錯誤引用,對訓練資料而言則可能把語意被污染的文字帶進模型。它不一定需要讓 AI 完全失效,只要讓資料取得者多花一步成本判斷哪些內容可信 哪些內容被處理過,就已經改變原本的大規模抓取模式。


AI 讓每一頁多一點成本都開始變得重要


如果只是防止競爭對手抓幾千個商品價格,專門為某個網站寫一套 decoder 的成本通常不高,因此這類技術很容易陷入貓捉老鼠。但生成式 AI 的資料需求把同一個問題放大到了完全不同的尺度。大型模型 AI 搜尋與各種語料庫的建立不是處理幾千個網頁,而是數以億計甚至更多的文件。在這種規模下,資料取得模式必須高度標準化,每一個網頁的邊際處理成本越低越好。


直接抓 HTML 很便宜,解析 DOM 也很便宜,真正啟動瀏覽器 執行 JavaScript 下載每一個 font render 整個頁面,再以 OCR 或 multimodal model 比對畫面內容就昂貴得多。如果還要判斷某個網站是否採用了特殊字型 使用哪一套 mapping 哪些段落受到保護,成本還會繼續增加。單看一個頁面,這些差異可能小到可以忽略,但當數量放大到幾億甚至幾十億頁時,整體運算 頻寬與工程維護成本就會被放大。


所以 ShieldFont 是否破解得了並不是最有意思的問題。它當然可以破解,只要對方願意下載字型 研究 mapping,甚至直接用視覺模型閱讀瀏覽器畫面即可。真正值得觀察的是,如果不同網站使用不同 mapping,而且規則可以定期改變,原本高度自動化且接近零邊際成本的 crawling,會不會逐漸變成需要更多辨識 驗證與例外處理的工作。內容提供者真正可能獲得的不是一道不可穿越的牆,而是把一部分原本不存在的資料驗證成本重新加回去。


Poisoned Typeface 顯示問題已經超過傳統爬蟲


2026 年 LayerX 展示的 Poisoned Typeface 從另一個方向說明了同樣的問題。它利用字型與網頁顯示方式的差異,讓 AI assistant 讀到底層 HTML 時得到一套內容,但一般使用者在瀏覽器裡看到的卻是另一套內容。LayerX 關注的是資安風險,如果 AI assistant 只依賴 DOM 判斷網頁是否安全,攻擊者就可能利用顯示層與資料層的差異,讓 AI 認為網頁沒有問題,實際呈現給人的內容卻完全不同。


ShieldFont 和 Poisoned Typeface 的目的剛好相反,一個是保護內容,一個是在展示如何利用這個落差攻擊 AI,但兩者背後的漏洞其實是一樣的。過去網路長期假設 HTML 中的文字就是內容本身,CSS 和 font 只是 presentation layer,最多改變大小 位置與外觀,不會改變語意。搜尋引擎 screen reader 翻譯軟體 爬蟲甚至後來的 AI assistant,很多功能都是建立在這個假設上。一旦 font 也開始承擔 semantic transformation,原本讀 DOM 就等於讀網頁的邏輯就不再可靠。


這也是為什麼 ShieldFont 的意義不應只被理解成另一種防爬蟲工具。它反映的是 AI 時代一個更大的問題,機器愈來愈常不是透過人實際看到的畫面理解網頁,而是從底層結構 API 或抽取後的文字直接理解內容。這種做法之所以普及,是因為便宜又有效,但只要網站開始刻意利用兩者的差異,AI 系統就必須重新思考自己到底相信哪一層。


真正可行的應用未必是保護整篇文章


ShieldFont 目前仍然有很明顯的限制。網站不是只服務 AI crawler,Google 需要正常文字建立索引,screen reader 需要讀取可理解的 DOM,翻譯工具 RSS 站內搜尋 社群 preview 與各種輔助功能也都仰賴 machine readable text。如果整篇文章全部使用這種機制,很可能 AI 還沒真正被擋住,SEO accessibility 和正常讀者體驗先受到影響。


因此真正有商業價值的做法很可能不是整站全面部署,而是選擇性保護。新聞與分析文章裡有很多資訊本來就不具獨占性,例如公司名稱 財報數字 政策時間 事件經過與市場規模,這些資訊可以從其他來源重新取得,也有必要讓搜尋引擎正常辨識。真正具有原創價值的通常是作者如何把這些資料串起來 怎麼建立因果關係 如何比較不同案例,以及最後形成什麼判斷。


如果未來內容網站把標題 摘要 新聞背景與部分正文維持正常 HTML,只對真正具有原創性的分析段落增加 machine friction,可能比整篇文章加密更符合商業利益。這樣既保留搜尋與發現能力,也可以降低最有價值的內容被低成本批次擷取的便利性。從這個角度看,ShieldFont 最有價值的地方未必是把文章藏起來,而是讓網站第一次有可能把可以公開被搜尋的資訊和不希望免費成為訓練資料的內容分開處理。


內容產業真正缺少的是可以執行的價格機制


生成式 AI 與內容產業目前最大的矛盾其實不是技術,而是成本分配。內容生產者負責採訪 研究 分析與寫作,內容一旦公開之後,數位複製的邊際成本卻幾乎等於零。搜尋引擎時代這個交換還有一套相對清楚的利益邏輯,搜尋引擎索引網站,網站換取流量。到了生成式 AI 時代,AI 服務有能力直接消化內容 整理內容甚至重新回答使用者問題,原本由搜尋結果導回原站的價值交換開始變得不那麼明確。


robots.txt 可以表達網站不希望被抓取的意願,但本質上仍然依賴對方自願遵守。paywall 的技術阻力比較強,但同時也把一般讀者擋在外面。法律訴訟可以討論權利歸屬,卻很難處理每天數十億次的資料取得。內容產業真正缺少的是一套可以在技術層次區分不同使用方式的機制,讓搜尋索引 正常閱讀 AI 摘要與模型訓練不必永遠被視為同一種存取行為。


ShieldFont 當然還遠遠不是這個問題的完整答案,但它指出了一條值得注意的方向。過去所有內容防禦都把重點放在能不能拿到,現在開始有人改問拿到之後能不能直接相信。如果後者逐漸成為 AI 資料蒐集的普遍問題,大型模型公司真正需要付出的就不再只是抓取成本,而還包括驗證 還原與資料品質管理的成本。


從貓眼到 ShieldFont 改變的是資料取得的成本結構


從 TuringFonts 貓眼電影到 Poisoned Typeface 和 ShieldFont,這些看似零散的技術其實串出了一條很清楚的演進路線。最早的做法只是讓機器看不懂,後來開始讓機器看見不同於人類的內容,再到現在進一步利用這個差異改變 AI 取得與驗證資料的成本。它們未必會成為內容產業最後採用的標準工具,但已經把一個過去很少被討論的問題推到檯面上。


AI 公司真正的競爭優勢不只是模型能力,也包括可以用極低的平均成本吸收大量公開網路內容。只要這個前提成立,任何單一網站都很難在資料使用上取得多少談判籌碼。ShieldFont 不可能靠一套字型阻止 AI 公司抓資料,但它提出的思路是讓大量抓取不再那麼便宜,並把原本全部由內容提供者承擔的成本重新分配一部分給資料使用者。


對內容產業而言,這可能比建立另一堵更高的牆更值得注意。只要資料仍然公開,真正有足夠資源的人最終還是有辦法取得,但如果每一家網站都能增加不同的驗證 還原與處理成本,原本接近零成本的大規模抓取就不再完全成立。從貓眼用字型隱藏票房數字,到 ShieldFont 嘗試讓 AI 抓到語意被污染的內容,十年間真正改變的不是字型技術本身,而是網站開始從阻止機器閱讀,轉向思考如何讓機器為閱讀付出更多成本。

留言


bottom of page