新聞中心
大家好,我是志斌~

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的零陵網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
之前給大家介紹了一種SVG映射反爬蟲(chóng),今天在給大家介紹另外一種通過(guò)映射關(guān)系來(lái)進(jìn)行反爬蟲(chóng)的方式。
不知道大家有沒(méi)有遇到過(guò)這種情況,在寫(xiě)爬蟲(chóng)程序之前我們需要對(duì)目標(biāo)數(shù)據(jù)進(jìn)行觀察,但是在我們觀察時(shí)發(fā)現(xiàn)目標(biāo)數(shù)據(jù)在網(wǎng)頁(yè)中是以這種奇怪的方式出現(xiàn)的。
這種反爬蟲(chóng)就是字體反爬蟲(chóng),今天志斌就來(lái)跟大家分享一下如何繞過(guò)這類反爬蟲(chóng)。
一、原理
在之前,網(wǎng)站開(kāi)發(fā)者在設(shè)計(jì)網(wǎng)頁(yè)時(shí)只能使用公用的字體來(lái)展示網(wǎng)頁(yè)中的數(shù)據(jù)。
但是,隨著CSS樣式的深入開(kāi)發(fā),網(wǎng)站開(kāi)發(fā)者可以將自己的字體放到服務(wù)器中。當(dāng)用戶在訪問(wèn)Web界面時(shí),對(duì)應(yīng)的字體就會(huì)被瀏覽器自動(dòng)下載到用戶的計(jì)算機(jī)中,然后通過(guò)CSS樣式進(jìn)行調(diào)用。
之后,通過(guò)一種映射關(guān)系,使得網(wǎng)頁(yè)中的源數(shù)據(jù)變?yōu)檎嬲臄?shù)據(jù)進(jìn)行展示。
通過(guò)這種方式,使得這樣就使得網(wǎng)站開(kāi)發(fā)者進(jìn)行網(wǎng)頁(yè)設(shè)計(jì)時(shí),只需要使用特殊字符進(jìn)行占位即可,不需要將真正的數(shù)據(jù)放到頁(yè)面中去。這樣,爬蟲(chóng)程序如果不知道這種映射關(guān)系的話,就無(wú)法從字體中獲取正確的數(shù)據(jù),從而實(shí)現(xiàn)反爬蟲(chóng)。
二、破解
破解這類字體反爬蟲(chóng)有以下幾步。
1.下載字體woff文件
從上面我們知道,字體是在服務(wù)器上進(jìn)行存儲(chǔ),并通過(guò)瀏覽器下載到我們的電腦上的,那么我們就可以在網(wǎng)站上找到加載的字體文件,下載下來(lái)。
下載下來(lái)之后,打開(kāi)它進(jìn)行觀察,這里給大家分享一個(gè)再點(diǎn)字體編譯器網(wǎng)站,使用它可以很方便打開(kāi)woff文件。網(wǎng)址:http://font.qqe2.com/index-en.html。
打開(kāi)字體文件之后,我們發(fā)現(xiàn),每個(gè)數(shù)字都對(duì)應(yīng)一個(gè)字符串,如7對(duì)應(yīng)的是$E9C7。
2.尋找映射關(guān)系
通過(guò)對(duì)源網(wǎng)頁(yè)中的占位數(shù)據(jù)和字體進(jìn)行比對(duì),我們發(fā)現(xiàn)將源數(shù)據(jù)中的替換成$,然后將字符串首字母大寫(xiě),就變成了字體對(duì)應(yīng)的字符串了。
3.構(gòu)建映射算法
在上面我們已經(jīng)找到了字體之間映射關(guān)系,那么我們現(xiàn)在就可以開(kāi)始用Python來(lái)構(gòu)建映射算法,從而使得爬蟲(chóng)可以獲取一個(gè)正確的數(shù)據(jù)。
構(gòu)建代碼如下:
- data = {
- '' : 7,
- '' : 1,
- '' : 2,
- '' : 6,
- '' : 9,
- '' : 5,
- '' : 3,
- '' : 0,
- '' : 4,
- '' : 8,
- }
之后,我們即可對(duì)網(wǎng)頁(yè)進(jìn)行爬取,然后將對(duì)應(yīng)的源數(shù)據(jù)與data進(jìn)行比如,從而獲得正確數(shù)據(jù)。
三、小結(jié)
1. 本文詳細(xì)介紹了如何破解字體反爬蟲(chóng),由于這種反爬蟲(chóng)是使用CSS進(jìn)行加載和映射的,所以即使使用一些自動(dòng)化軟件或者渲染工具也無(wú)法獲得真正的數(shù)據(jù)。
2. 這類反爬蟲(chóng)的破解只需要將woff文件中的字體與頁(yè)面數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系找到,構(gòu)建好即可。
3. 找到woff文件進(jìn)行下載是關(guān)鍵。
4. 有興趣的讀者可以找志斌要一下網(wǎng)站自己嘗試一下。
5. 本文僅供學(xué)習(xí)參考,不做它用。
網(wǎng)頁(yè)題目:字體反爬蟲(chóng)的原理和破解方法
瀏覽路徑:http://www.dlmjj.cn/article/dpcohdc.html


咨詢
建站咨詢
