1. 程式人生 > 實用技巧 >CSS常見反爬技術

CSS常見反爬技術

目錄

利用字型

反爬原理

反爬原理:
1、主要利用font-family屬性,例如設定為my-font
2、在HTML裡面不常見(不可讀)的unicode
3、在CSS字型(my-font)中將其對映到常見(可讀)到字型,例如數字
4、爬蟲在抓取資料的時候只能抓到unicode,而不是真實的資料

應對措施

1、下載woff字型檔案,轉化為tff檔案
2、用百度字型編輯器開啟tff檔案,並確定其unicode與其實際的對映關係
3、將下載的HTML內容按照對映關係替換
4、解析HTML並獲取正確的資料

難點:

有些網站會動態生成woff,這種反爬措施比較難以自動化繞開

利用背景

反爬原理

1、資料利用圖片背景(雪碧圖座標)展示給使用者,而不是直接文字展示
2、圖片包含一張雪碧圖,資料利用背景偏移量來獲取(雪碧圖座標)
3、爬蟲在抓取的時候看不到實際值,而只是圖片

應對措施

1、下載雪碧圖,手動檢查資料對應的座標值
2、找到資料對應的座標值的對映關係
3、找到對映關係,轉化為真實資料

利用偽類

反爬原理

1、不直接將內容展現到html的元素中
2、通過偽類的content屬性將要展示的值展示出來

例如:滑鼠懸浮的時候展示資料

應對措施

1、利用pyppeteer或者selenium這樣的自動化測試工具
2、在頁面上執行下面的JS程式碼,即可獲取content
注意:before是偽類,也可能是after

JS程式碼:
const el = document.querySelector("類選擇器")
const styles = getComputedStyle(el,'before')
console.log(styles.content)  # 列印資料值


利用元素定位

反爬原理

1、利用絕對定位,將資料用其他符號替換,偏移量
2、替換的符號隨機的
3、如果直接抓取,將抓到錯誤的資訊

應對措施

計算出替換的元素偏移量,與被替換的元素相對比,還原實際值

利用字元切割

反爬原理

1、將字串用標籤分割
2、由於是內聯塊級(inline-block),可以一行展示
3、通常還混淆有不現實的標籤(display:none)

應對措施

1、將內聯塊級標籤的innerText拼接起來
2、注意過濾掉所有的display:none的屬性