CSS常見反爬技術
阿新 • • 發佈:2020-10-16
目錄
利用字型
反爬原理
反爬原理:
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的屬性