python爬蟲反爬是如何喪心病狂的通過css加密讓你爬不到

2019-06-11     一枚丶程序媛呀

這次我們來說點爬蟲稍微進階一點的

關於如何破解 css 加密後的數據

別急,我們先站在對方的角度想一想

假如我們現在有一個網站、這個網站有些關鍵的數據信息、不想給別人那麼輕易的爬取到

你會怎麼做呢?

(文末有福利哦、建議看完 別走開)

一個可執行的方法,就是將關鍵數據通過 css 加密

這樣的話,當別人通過 requests 來請求我們的網站的時候,返回的 HTML 裡面就得不到關鍵的數據了

舉個例子,簡單寫一個帥b的頁面

這時候我們通過 requests 去請求

在這裡請求的是本地的網頁,所以需要掛載一下 FileAdapter

接著會得到這樣的原始碼

(應該這樣寫:

問題來了,怎麼把帥b的個人信息搞一下、讓返回的 HTML 裡面拿不到呢、可以通過添加 css 來打亂順序

就以「姓名」為例,來定義一個 css 的類元素

這裡定義了兩個屬性

一個是用來將它移除螢幕

一個就是不要占了行高

反正就是用來隱藏我們的干擾信息

接著 HTML 就可以這樣寫

再來定義一個 css 屬性

意思就是說

在 EFG 選擇器的這個標籤後追加內容

所以我們真正的代碼就是這樣

那麼這時候普通用戶看到的網頁

是可以看到關鍵信息的

而這個時候

你來爬取得到的卻是這樣的

得到的結果是不是、可以讓你懵逼一會了?

一些沒耐心的人、看到這裡應該就不打算爬下去了、哈哈哈...

當然了、這只是 css 一種反爬的思路,實際運用到項目中,還是有點複雜的,比如大眾點評的網站...那麼接下來就是

學習 python 的正確姿勢

來看看大眾點評的廣州按摩店

http://www.dianping.com/guangzhou/ch30/g141

假設你想爬取這些數據

你開興沖沖的看它的源碼

結果發現,我去

怎麼數字變成一個方塊?

我們來看看它的 css

這裡定義了一個 PingFangSC-Regular 的字體

貓膩應該就出在這裡了

我們去掉 css 定義的字體

可以看到數字也跟著消失

這個是時候你是不是好像發現了什麼

來看看這個頁面的原始碼文件

每個數字都是變成了

開頭的神秘代碼

這個時候你是不是

又好像發現了什麼

這其實就是一種 css 的加密方式

加密自定義字體

讓你爬取的時候拿不到關鍵的數據

還是得先站在對方的角度

想想這種喪盡天良的方式

到底是怎麼做到的呢?

這就要從前端的開發說起了

下面請開始

在我們的電腦裡面

都有一些字體庫

比如什麼宋體啊,黑體啊等等

所以你在上網的時候,看到的網頁的字體都差不多,沒有什麼千差萬別的情況,

但是有些公司想要自家的、網頁上的文字更加炫酷一點,就是想要不一樣、就是要顯得牛逼

比如蘋果的官網

就整了一些自定義的字體

而要實現這種方式

在 css3 中定義字體和字體文件路徑

就可以使用了


@font-face {

font-family: "自定義字體的名稱";

src: "自定義字體的路徑"

}

接下來

就在一開始的帥b頁面中

實現一下像大眾點評這樣的反爬吧

可以在以下連結下載苹方字體

https://github.com/zongren/font/raw/master/PingFang-SC-Regular.ttf

我們要對字體的數字加密

可以使用 fonttools 來提取數字


pip install fonttools

安裝好了之後就可以使用

如下命令來提取了


pyftsubset /home/shuaib/Desktop/PingFang-SC-Regular.ttf --text="1234567890" --output-file="PingFang-Num.tty"

這裡的

/home/shuaib/Desktop/PingFang-SC-Regular.ttf

是你下載的字體文件路徑

--text="1234567890"

是你要提取的內容

--output-file="PingFang-Num.tty"

定義你提取後的字體文件

ok

運行之後你在該路徑下

就會生成一個新的字體文件了

打開看就都是數字啦

有了數字字體文件之後

接下來就是對字體加密了

以下這個網站可以對字體加密

http://fontello.com/

不過這個網站僅支持 svg 格式的

所以我們可以把 ttf 轉化成 svg 格式

小帥b發現這個網站不錯

https://convertio.co/zh/ttf-svg/

那就轉化一波唄

下載下來之後,再回到 fontello、把 svg 拖進去

然後就變成這個樣子

選中要加密的字

然後點擊

Customize Codes

這時候就可以對字加密啦

接著點擊右上角

下載加密後的字體文件

  • 那麼現在
  • 我們就有了所需要的文件了

趕緊在帥b的頁面試試看吧、首先定義一下,

我們自定義文件的路徑和名稱,比如這裡我們的字體就叫帥b

接著我們就可以使用剛剛加密的 code 了

打開網頁

可以看到數字正常顯示

而源碼

變成了方塊了

字體也指向了shuaib

是不是和大眾點評的一模一樣了

現在你已經知道了對方的套路了,那麼現在讓你去爬取這樣的網站,你知道怎麼爬取嗎?

本文就分享到這裡了、讓大家觀看這麼久也不容易,所以奉上些福利給大家

只轉發並關注,私信小編「資料」即可免費獲取Python的源碼資料!

Python零基礎進階,爬蟲 、教程、源碼、實戰項目,你還怕學不會嗎?趕緊私信領取吧!

文章來源: https://twgreatdaily.com/zh-tw/1_vMKmwBmyVoG_1ZQwrZ.html