前幾天我們說到這個貓眼的字型反爬,其自定義字型定義的都是數字,而今天我們要嘗試破解的是汽車之家的漢字字型反爬,現在就來一探究竟吧!

可以看到其中的“更”字在檢視元素的時候顯示為小框,可見這就是該網站的一種反爬措施了。
我們先找其自定義字型檔案,我們在網頁源代碼中搜尋font-face,就能夠在其中有該檔案的連結。
這是一個ttf檔案,我們采用FontCreator軟體來觀察。字型檔案導入之後的效果如下:
如果每個頁面都是相同的自定義字型檔案,那我們可以直接構造映射并完成對字型的反反爬。現實果然很殘酷,每個不同的頁面都有不同的字型檔案,但是幸運的是,每個字型檔案包含的漢字數目和類型是完全相同的。再打開一個網頁上的字型檔案來觀察。
隻是變換了name而已,那豈不是跟貓眼的數字字型反爬一模一樣了嗎。
我們利用fontTools,把這兩個字型檔案給存儲為xml來看看這個字型對象是如何定義的吧~我們以“右”這個字為例,
是不是能找到一些規律呢?同一漢字的對象是不相同的,但是差別是微小的,對象中每個坐标的內插補點較小,這樣我們可以通過限定對象的坐标值內插補點在一定範圍内就可以認為是兩個相同的漢字了。
下面是判斷字型對象是否表示同一個字的比較函數:
然後,利用相同的思路,下載下傳新的ttf字型檔案,将其與先有的base.ttf檔案進行比較,若兩個name表示相同的漢字,則構造新的字典,并将網頁中的 等字樣根據新的字典變換成漢字。具體代碼如下:
其中word_list和uniname_list1是通過FontCreator軟體一一對應記錄下來的,即構造了一個base字典,作為參照。
通過之前幾篇JS解密、app抓包和字型反爬,我們可以看到,在分析網頁分析代碼的時候需要利用好多種多樣的工具來幫助我們完成所要資訊的爬取。選對工具,才能事半功倍~