真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

五分鐘教你弄懂了字體反爬是個啥

今天的文章內容主要是關于字體反爬。

創(chuàng)新互聯(lián)是一家以網(wǎng)絡技術公司,為中小企業(yè)提供網(wǎng)站維護、網(wǎng)站設計、成都做網(wǎng)站、網(wǎng)站備案、服務器租用、空間域名、軟件開發(fā)、成都小程序開發(fā)等企業(yè)互聯(lián)網(wǎng)相關業(yè)務,是一家有著豐富的互聯(lián)網(wǎng)運營推廣經驗的科技公司,有著多年的網(wǎng)站建站經驗,致力于幫助中小企業(yè)在互聯(lián)網(wǎng)讓打出自已的品牌和口碑,讓企業(yè)在互聯(lián)網(wǎng)上打開一個面向全國乃至全球的業(yè)務窗口:建站聯(lián)系熱線:13518219792

目前已知的幾個字體反爬的網(wǎng)站是貓眼,汽車之家,天眼查,起點中文網(wǎng)等等。

以前也看過這方面的文章,今天跟個老哥在交流的時候,終于實操了一把,弄懂了字體反爬是個啥玩意。下面聽我慢慢道來。

本文用到的第三方庫

fontTools

1、目標網(wǎng)站

url = “https://su.58.com/qztech/”

2、反爬蟲機制

網(wǎng)頁上看見的

五分鐘教你弄懂了字體反爬是個啥

后臺源代碼里面的

五分鐘教你弄懂了字體反爬是個啥

從上面可以看出,生這個字變成了亂碼,請大家特別注意箭頭所指的數(shù)字。

3、解決

1、確定反爬方法

在看了別人的解析文章之后,確定采取的是字體反爬機制,即網(wǎng)站定義了字體文件,然后進行相應的查找替換,在前端看起來,是沒有任何差異的。其實從審查元素的也是可以看到的:

五分鐘教你弄懂了字體反爬是個啥

和大眾點評的反爬差不多,都是通過css搞得。

2、尋找字體文件

以上面方框里的”customfont“為關鍵詞搜了一下,發(fā)現(xiàn)就在源代碼里面:

五分鐘教你弄懂了字體反爬是個啥

而且還有base64,直接進行解密,但是解密出來的其實是亂碼,這個時候其實要做的很簡單,把解密后的內容保存為.ttf格式即可。

ttf文件: *.ttf是字體文件格式。TTF(TrueTypeFont)是Apple公司和Microsoft公司共同推出的字體文件格式,隨著windows的流行,已經變成最常用的一種字體文件表示方式。
@font-face 是CSS3中的一個模塊,主要是實現(xiàn)將自定義的Web字體嵌入到指定網(wǎng)頁中去。

因為我們要對字體進行研究,所以必須將它打開,這里我是用的是FontCreator,打開以后是這個樣子(其實很多字,在這里為了看的清楚,所以只截了下面的圖):

五分鐘教你弄懂了字體反爬是個啥

很明顯,每個字可以看到字形和字形編碼。

觀察現(xiàn)在箭頭指的地方和前面箭頭指的地方的數(shù)字是不是一樣啊,沒錯,就是通過這種方法進行映射的。

所以我們現(xiàn)在的思路似乎就是在源代碼里找到箭頭指的數(shù)字,然后再來字體里找到后替換就行了。

恭喜你,如果你也是這么想的,那你就掉坑里了。

因為每次訪問,字體字形是不變的,但字符的編碼確是變化的。因此,我們需要根據(jù)每次訪問,動態(tài)解析字體文件。

字體:

五分鐘教你弄懂了字體反爬是個啥

所以想通過寫死的方式也是行不通的。

這個時候我們就要對字體文件進行更深一步的研究了。

3、研究字體文件

剛剛的.ttf文件我們是看不到內部的東西的,所以這個時候我們要對字體文件進行轉換格式,將其轉換為xml格式,然后來查看:

具體操作如下:

from fontTools.ttLib import TTFontfont_1 = TTFont('58_font_1.ttf')font_base.saveXML('font_1.xml')

xml的格式如下:

五分鐘教你弄懂了字體反爬是個啥
五分鐘教你弄懂了字體反爬是個啥

文件很長,我只截取了一部分。

仔細的觀察一下,你會發(fā)現(xiàn)~這倆下面的x,y,on值都是一毛一樣的。所以我們的思路就是以一個已知的字體文件為基本,然后將獲取到的新的字體文件的每個文字對應的x,y,on值進行比較,如果相同,那么說明新的文字對就 可以在基礎字體那里找到對應的文字,有點繞,下面舉個小例子。

假設: “我” 在基本字體中的名為uni1,對應的x=1,y=1,n=1新的字體文件中,一個名為uni2對應的x,y, n分別于上面的相等,那么這個時候就可以確定uni2 對應的文字為”我”。

查資料的時候,發(fā)現(xiàn)在特殊情況下,有時候兩個字體中的文字對應的x,y不相等,但是差距都是在某一個閾值之內,處理方法差不多,只不過上面是相等,這種情況下就是要比較一下。

其實,如果你用畫圖工具按照上面的x與y值把點給連起來,你會發(fā)現(xiàn),就是漢字的字形~

所以,到此總結一下:

一、將某次請求獲取到的字體文件保存到本地[基本字體];
二、用軟件打開后,人工的找出每一個數(shù)字對應的編碼[
一定要保證順序的正確,要不然會出事];
三、我們以后訪問網(wǎng)頁時,需要保存新字體文件;
四、用Fonttools庫對基本字體與新字體進行處理,找
到新的字體與基本字體之間的映射;
五、替換;

4、上代碼

微信里上代碼真的太丑了,

還是算了吧,微信后臺關鍵詞“字體加密” 即可獲取github地址。

看一下成果

五分鐘教你弄懂了字體反爬是個啥

總結

其實這個流程最大的問題就是我們人工錄入的基本字體的字典數(shù)據(jù)有可能是會發(fā)生變化的,這就導致我們后面還要手動去改。

現(xiàn)在,如果你已經看懂了本文,可以找找其他的網(wǎng)站試試啦!

如果有任何問題,歡迎交流。


名稱欄目:五分鐘教你弄懂了字體反爬是個啥
地址分享:http://weahome.cn/article/jcsdgi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部