利用字體
反爬原理
反爬原理:
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的屬性