自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

CSS偏移反爬蟲的原理和破解方法

開發(fā) 前端
前幾天在爬取某網(wǎng)站的時(shí)候遇到了CSS偏移反爬蟲,它是一種利用CSS樣式將亂序的文字排版成人類正常閱讀順序的反爬蟲。今天志斌就來跟大家分享一下這類反爬蟲應(yīng)該如何繞過。

[[407877]]

本文轉(zhuǎn)載自微信公眾號(hào)「志斌的python筆記」,作者志斌。轉(zhuǎn)載本文請(qǐng)聯(lián)系志斌的python筆記公眾號(hào)。

大家好,我是志斌~

前幾天在爬取某網(wǎng)站的時(shí)候遇到了CSS偏移反爬蟲,它是一種利用CSS樣式將亂序的文字排版成人類正常閱讀順序的反爬蟲。今天志斌就來跟大家分享一下這類反爬蟲應(yīng)該如何繞過。

01原理

在搭建網(wǎng)頁的時(shí)候,我們需要用CSS來控制各類字符的位置,也正是如此,我們可以利用CSS來將瀏覽器中顯示的文字,在HTML中以亂序的方式存儲(chǔ),從而來限制爬蟲。如下圖,我們發(fā)現(xiàn)瀏覽器中實(shí)際顯示的是1226,但是HTML中顯示的是1262。

接下來,我們通過一個(gè)例子來了解繞過CSS偏移反爬蟲的方法。

02繞過

從下圖中我們看出機(jī)票價(jià)格的數(shù)據(jù)被包裹在一個(gè)標(biāo)簽中,標(biāo)簽大小是64px。如下圖所示:

進(jìn)一步對(duì)網(wǎng)頁進(jìn)行觀察發(fā)現(xiàn),標(biāo)簽中有五個(gè)標(biāo)簽,它們每一對(duì)標(biāo)簽都有特定的樣式。如下圖所示:

我們用這些CSS樣式來進(jìn)行分析的話,我們發(fā)現(xiàn),第一對(duì)標(biāo)簽中的四對(duì)標(biāo)簽剛好占滿了標(biāo)簽的位置。如下圖所示:

瀏覽器中,本應(yīng)顯示的是5377,因?yàn)榈诙⑷?、四、五?duì)標(biāo)簽中有值,所以我們還需要看一下他們的位置。

第二對(duì)的<b>標(biāo)簽的位置樣式是left:-64px,所以第二對(duì)<b>標(biāo)簽中的1就會(huì)覆蓋第一對(duì)<b>標(biāo)簽中第一對(duì)<i>標(biāo)簽中的5;第三對(duì)的<b>標(biāo)簽的位置樣式是left:-32px,第三對(duì)<b>標(biāo)簽中的2會(huì)覆蓋第一對(duì)<b>標(biāo)簽中第三對(duì)<i>標(biāo)簽中的7。依次類推,第四對(duì)<b>標(biāo)簽中的6會(huì)覆蓋第一對(duì)<b>標(biāo)簽中第四對(duì)<i>標(biāo)簽中的7,第五對(duì)<b>標(biāo)簽中的2會(huì)覆蓋第一對(duì)<b>標(biāo)簽中第二對(duì)<i>標(biāo)簽中的3。

通過上面的分析,我們發(fā)現(xiàn),CSS偏移反爬蟲其實(shí)就是讓幾個(gè)數(shù)據(jù)由CSS控制位置,來對(duì)原數(shù)據(jù)進(jìn)行覆蓋,從而實(shí)現(xiàn)反爬效果。

那么當(dāng)我們遇到這類反爬蟲的時(shí)候,首先就需要對(duì)頁面的CSS進(jìn)行觀察分析,找到偏移量的計(jì)算規(guī)律,然后提取出每個(gè)標(biāo)簽中l(wèi)eft的值,根據(jù)規(guī)律來排列出真實(shí)的數(shù)據(jù)。

當(dāng)然,會(huì)有讀者說,我們找到了規(guī)律,但是不會(huì)提取標(biāo)簽中的數(shù)據(jù)怎么辦?不用擔(dān)心,在之前的文章中,志斌介紹過如和用BS4提取數(shù)據(jù)的方式,其中就有提取標(biāo)簽數(shù)據(jù)的方法,有不懂的小伙伴,可以看看這篇文章學(xué)會(huì)BS4,輕松解決數(shù)據(jù)提取!。

03小結(jié)

1. CSS偏移反爬蟲實(shí)質(zhì)上是通過CSS樣式來控制數(shù)據(jù)在頁面中顯示的位置,從而將亂序的數(shù)據(jù)以正常的形式展示給用戶。

2. 破解這種反爬蟲的難度并不大,主要是找到位置偏移的計(jì)算方法,而且代碼書寫可能較為繁瑣,讀者們可以提前寫好流程圖,然后在進(jìn)行書寫。

3. 目前這種反爬蟲方法主要是針對(duì)于數(shù)字?jǐn)?shù)據(jù)的反爬。

4. 本文旨在學(xué)習(xí)與研究CSS偏移反爬蟲,請(qǐng)大家不要用于非法用途。

 

責(zé)任編輯:武曉燕 來源: 志斌的python筆記
相關(guān)推薦

2021-10-15 11:37:44

反爬蟲破解

2021-06-09 18:22:11

反爬蟲破解

2022-11-24 10:24:32

2022-05-26 12:26:27

CSSJS逆向

2016-10-13 15:51:50

2022-09-14 23:06:45

2020-10-20 10:47:51

破解MassLogge

2009-04-27 21:28:56

2022-09-20 07:02:20

網(wǎng)絡(luò)爬蟲反爬蟲

2018-01-29 09:28:44

2024-06-07 08:56:43

HTTPPythonSelenium

2021-06-10 18:24:59

反爬蟲驗(yàn)證碼爬蟲

2017-05-15 10:39:48

爬蟲應(yīng)對(duì)機(jī)制

2022-07-03 10:43:23

JS逆向破解

2016-10-14 16:35:39

2017-04-27 20:45:48

爬蟲反爬蟲

2017-05-10 12:05:17

pyspiderHTMLCSS

2021-06-06 19:53:05

爬蟲處理字體反爬

2017-06-30 13:23:02

2020-05-21 09:25:17

Python反爬蟲DDOS攻擊
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)