關(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)等等。

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

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

fontTools

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

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

二、反爬蟲(chóng)機(jī)制

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

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

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

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

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

三、解決

1、確定反爬方法

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

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

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

2、尋找字體文件

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

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

而且還有base64,直接進(jìn)行解密,但是解密出來(lái)的其實(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)行研究,所以必須將它打開(kāi),這里我是用的是FontCreator,打開(kāi)以后是這個(gè)樣子(其實(shí)很多字,在這里為了看的清楚,所以只截了下面的圖):

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

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

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

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

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

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

字體1:

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

字體2:

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

所以想通過(guò)寫(xiě)死的方式也是行不通的。

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

3、研究字體文件

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

具體操作如下:

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)行比較,如果相同,那么說(shuō)明新的文字對(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),處理方法差不多,只不過(guò)上面是相等,這種情況下就是要比較一下。

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

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

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

4、上代碼

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

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

看一下成果:

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

其實(shí)這個(gè)流程大的問(wèn)題就是我們?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è)資訊頻道!

新聞標(biāo)題:關(guān)于字體反爬的介紹-創(chuàng)新互聯(lián)
鏈接分享:http://muchs.cn/article26/dpihjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷域名注冊(cè)、品牌網(wǎng)站建設(shè)、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司