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

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

Python隱式Style–CSS在反爬蟲中有什么作用

這篇文章主要講解了“Python隱式Style–CSS在反爬蟲中有什么作用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Python隱式Style–CSS在反爬蟲中有什么作用”吧!

堅(jiān)守“ 做人真誠 · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價(jià)值觀,專業(yè)網(wǎng)站建設(shè)服務(wù)10余年為成都玻璃鋼坐凳小微創(chuàng)業(yè)公司專業(yè)提供企業(yè)網(wǎng)站制作營銷網(wǎng)站建設(shè)商城網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)小程序網(wǎng)站建設(shè)網(wǎng)站改版,從內(nèi)容策劃、視覺設(shè)計(jì)、底層架構(gòu)、網(wǎng)頁布局、功能開發(fā)迭代于一體的高端網(wǎng)站建設(shè)服務(wù)。

隱式 Style–CSS 在反爬蟲中的應(yīng)用

什么是隱式 Style–CSS

先來嘮嘮什么是 隱式 Style–CSS:

CSS中,::before創(chuàng)建一個(gè)偽元素,其將成為匹配選中的元素的第一個(gè)子元素。常通過 content 屬性來為一個(gè)元素添加修飾性的內(nèi)容

源自:https://developer.mozilla.org

上面的這段引用,看著有點(diǎn)難懂,沒關(guān)系我們用下面這個(gè)例子簡單演示一下。

我們新建一個(gè) HTML 文件輸入下面這樣的內(nèi)容:

大家好,我是咸魚,我是 NightTeam 的一員

源自:https://developer.mozilla.org

并在這個(gè) HTML 中引用下面這個(gè)樣式文件:

q::before { 
  content: "?";
  color: blue;
}
q::after { 
  content: "?";
  color: red;
}

源自:https://developer.mozilla.org

最后在瀏覽器中展示的內(nèi)容是這樣的:

<<大家好,我是咸魚>>,<<我是 NightTeam 的一員>>

源自:https://developer.mozilla.org

可以看到在上面的例子里,我在源碼里隱藏了文字前后的符號(hào),但是在瀏覽器顯示的時(shí)候卻是正常的。

目前很多小說網(wǎng)站都使用了類似這樣的反爬技術(shù)保護(hù)自己的內(nèi)容不被爬蟲爬取。

那么類似這樣的反爬技術(shù)應(yīng)該怎么處理?

實(shí)例講解

咸魚準(zhǔn)備了一個(gè)例子簡單實(shí)戰(zhàn)一下,用實(shí)例講講我遇到這類反爬是如何處理的。

這個(gè)例子運(yùn)行在本地,所以就沒有分析請(qǐng)求的步驟,直接分析下瀏覽器顯示與源碼分別什么樣,找找有沒有什么突破口。

瀏覽器展示:

Python隱式Style–CSS在反爬蟲中有什么作用

源碼顯示:

Python隱式Style–CSS在反爬蟲中有什么作用

可以在源碼中看到部分內(nèi)容被替換。

頁面分析

打開 開發(fā)者模式,看看隱藏的文字是什么樣子的。【圖2-1】

Python隱式Style–CSS在反爬蟲中有什么作用

可以看到在【圖2-1】里方框 2 中 content 的內(nèi)容正是 方框 1 在源碼頁面里隱藏的內(nèi)容。

這符合我們?cè)诘谝徊糠株P(guān)于 隱式 style-css 的舉例。

那么為了能夠拿到全部的內(nèi)容,我們只需要把替換掉的span標(biāo)簽替換回【圖2-1】中方框 2 里的 content 的值就可以了。

按照正常的頁面結(jié)構(gòu),可以通過點(diǎn)擊【圖2-2】中框選的地方直接跳轉(zhuǎn)到 CSS 文件的位置。

Python隱式Style–CSS在反爬蟲中有什么作用

但是在我們這個(gè)頁面結(jié)構(gòu)里沒有這樣可以點(diǎn)擊的位置,所以我們只能通過分析 span 標(biāo)簽的規(guī)律找找突破口。

所有的 span 標(biāo)簽的類名都是 context_kw 加上一個(gè)數(shù)字拼接的,我們?cè)囍阉?context_kw 找找。

可以看到在文件里找到了與 context_kw 相關(guān)的 JS 代碼?!緢D2-3】

Python隱式Style–CSS在反爬蟲中有什么作用

大致瀏覽了整段 JS 代碼,這段 JS 通過功能分為兩個(gè)部分。【圖2-4】

Python隱式Style–CSS在反爬蟲中有什么作用

第一部分:CryptoJS的加解密的邏輯內(nèi)容,可以忽略

第二部分:經(jīng)過變量名混淆的內(nèi)容,第二部分的 JS 對(duì)數(shù)組中的密文進(jìn)行解密,并操作了 DOM ,完成了將 JS 與 CSS 結(jié)合完成了反爬最主要的邏輯。

部分加密分析

根據(jù)第二部分中操作 DOM 的代碼,我們找到關(guān)鍵 變量word

for (var i = 0x0; i < words[_0xea12('0x18')]; i++) {
            try {
                document[_0xea12('0x2a')][0x0][_0xea12('0x2b')]('.context_kw' + i + _0xea12('0x2c'), 'content:\x20\x22' + words[i] + '\x22');
            } catch (_0x527f83) {
                document['styleSheets'][0x0]['insertRule'](_0xea12('0x2d') + i + _0xea12('0x2e') + words[i] + '\x22}', document[_0xea12('0x2a')][0x0][_0xea12('0x2f')][_0xea12('0x18')]);
            }
        }

再繼續(xù)找到 word 的變量聲明的地方。

var secWords = decrypted[_0xea12('0x16')](CryptoJS['enc']['Utf8'])[_0xea12('0x17')](',');
var words = new Array(secWords[_0xea12('0x18')]);

按照這個(gè)方法,我們最后發(fā)現(xiàn) CSS 的 content 的內(nèi)容都是數(shù)組 _0xa12e 中一個(gè)經(jīng)過加密的元素用 AES解密后經(jīng)過一定處理得到的值。

有了這樣的一個(gè)邏輯框架之后我們就可以直接開始扣取我們需要的 JS 代碼了。

加密代碼修改

這個(gè)代碼比較簡單,具體的扣取步驟就不演示了,這里演示兩個(gè)在扣取代碼之后兩個(gè)需要改寫的點(diǎn)。

第一個(gè)是【圖2-5】中的異常捕獲,這里判斷了當(dāng)前的 URL 是否相等,但是我們?cè)?Node 環(huán)境下執(zhí)行是沒有 window 屬性的,如果不做修改會(huì)出現(xiàn)異常,所以需要把這里的 if 判斷語句注釋。

Python隱式Style–CSS在反爬蟲中有什么作用

第二個(gè)是【圖2-6】中在返回中的判斷語句,同樣是對(duì) Node 中不存在的屬性進(jìn)行判斷,所以同樣需要在這里進(jìn)行相應(yīng)的修改。

Python隱式Style–CSS在反爬蟲中有什么作用

例如:

_0x1532b6[_0xea12('0x26')](_0x490c80, 0x3 * +!('object' === _0xea12('0x27')))

以上兩點(diǎn)修改完后就可以獲取到所有被替換過的字符了。

感謝各位的閱讀,以上就是“Python隱式Style–CSS在反爬蟲中有什么作用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Python隱式Style–CSS在反爬蟲中有什么作用這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


網(wǎng)站標(biāo)題:Python隱式Style–CSS在反爬蟲中有什么作用
分享URL:http://weahome.cn/article/gpodcc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部