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

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

關(guān)于字體反爬的介紹-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)是一家企業(yè)級(jí)云計(jì)算解決方案提供商,超15年IDC數(shù)據(jù)中心運(yùn)營(yíng)經(jīng)驗(yàn)。主營(yíng)GPU顯卡服務(wù)器,站群服務(wù)器,四川移動(dòng)機(jī)房托管,海外高防服務(wù)器,大帶寬服務(wù)器,動(dòng)態(tài)撥號(hào)VPS,海外云手機(jī),海外云服務(wù)器,海外服務(wù)器租用托管等。

這篇文章主要介紹關(guān)于字體反爬的介紹,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

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

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

本文用到的第三方庫(kù)

fontTools

一、目標(biāo)網(wǎng)站

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

二、反爬蟲機(jī)制

網(wǎng)頁(yè)上看見的

關(guān)于字體反爬的介紹

后臺(tái)源代碼里面的

關(guān)于字體反爬的介紹

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

三、解決

1、確定反爬方法

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

關(guān)于字體反爬的介紹

和大眾點(diǎn)評(píng)的反爬差不多,都是通過css搞得。

2、尋找字體文件

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

關(guān)于字體反爬的介紹

而且還有base64,直接進(jìn)行解密,但是解密出來的其實(shí)是亂碼,這個(gè)時(shí)候其實(shí)要做的很簡(jiǎn)單,把解密后的內(nèi)容保存為.ttf格式即可。

ttf文件: *.ttf是字體文件格式。TTF(TrueTypeFont)是Apple公司和Microsoft公司共同推出的字體文件格式,隨著windows的流行,已經(jīng)變成最常用的一種字體文件表示方式。

@font-face 是CSS3中的一個(gè)模塊,主要是實(shí)現(xiàn)將自定義的Web字體嵌入到指定網(wǎng)頁(yè)中去。

因?yàn)槲覀円獙?duì)字體進(jìn)行研究,所以必須將它打開,這里我是用的是FontCreator,打開以后是這個(gè)樣子(其實(shí)很多字,在這里為了看的清楚,所以只截了下面的圖):

關(guān)于字體反爬的介紹

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

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

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

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

因?yàn)槊看卧L問,字體字形是不變的,但字符的編碼確是變化的。因此,我們需要根據(jù)每次訪問,動(dòng)態(tài)解析字體文件。

字體1:

關(guān)于字體反爬的介紹

字體2:

關(guān)于字體反爬的介紹

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

這個(gè)時(shí)候我們就要對(duì)字體文件進(jìn)行更深一步的研究了。

3、研究字體文件

剛剛的.ttf文件我們是看不到內(nèi)部的東西的,所以這個(gè)時(shí)候我們要對(duì)字體文件進(jìn)行轉(zhuǎn)換格式,將其轉(zhuǎn)換為xml格式,然后來查看:

具體操作如下:

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

xml的格式如下:

關(guān)于字體反爬的介紹

今天,我終于弄懂了字體反爬是個(gè)啥玩意!

文件很長(zhǎng),我只截取了一部分。

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

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

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

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

所以,到此總結(jié)一下:

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

4、上代碼

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

還是算了吧,微信后臺(tái)關(guān)鍵詞“字體加密” 即可獲取github地址。

看一下成果:

關(guān)于字體反爬的介紹

其實(shí)這個(gè)流程大的問題就是我們?nèi)斯や浫氲幕咀煮w的字典數(shù)據(jù)有可能是會(huì)發(fā)生變化的,這就導(dǎo)致我們后面還要手動(dòng)去改。

現(xiàn)在,如果你已經(jīng)看懂了本文,那么還不快去其他幾個(gè)網(wǎng)站試試?

以上是關(guān)于字體反爬的介紹的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!


當(dāng)前文章:關(guān)于字體反爬的介紹-創(chuàng)新互聯(lián)
鏈接分享:http://weahome.cn/article/dpihjg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部