安基網 首頁 編程 軟件學院 查看內容

python爬蟲反爬,是怎樣喪心病狂的 通過css加密讓你爬不到的?

2019-10-20 10:05| 投稿: xiaotiger |來自: 互聯網


免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!

摘要: 這次我們來說點爬蟲稍微進階一點的,關于如何破解 css 加密后的數據。別急,我們先站在對方的角度想一想,假如我們現在有一個網站、這個網站有些關鍵的數據信息、不想給別人那么輕易的爬取到,你會怎么做呢?(文末p ...

這次我們來說點爬蟲稍微進階一點的,關于如何破解 css 加密后的數據。

別急,我們先站在對方的角度想一想,假如我們現在有一個網站、這個網站有些關鍵的數據信息、不想給別人那么輕易的爬取到,你會怎么做呢?

(文末python全套視頻教程贈送、建議看完 別走開)

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

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

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

這時候我們通過 requests 去請求

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

接著會得到這樣的源代碼

(應該這樣寫:

問題來了,怎么把帥b的個人信息搞一下、讓返回的 HTML 里面拿不到呢、可以通過添加 css 來打亂順序,就以「姓名」為例,來定義一個 css 的類元素

這里定義了兩個屬性,一個是用來將它移除屏幕,一個就是不要占了行高,反正就是用來隱藏我們的干擾信息,接著 HTML 就可以這樣寫

再來定義一個 css 屬性

意思就是說:在 EFG 選擇器的這個標簽后追加內容,所以我們真正的代碼就是這樣

那么這時候普通用戶看到的網頁,是可以看到關鍵信息的

而這個時候,你來爬取得到的卻是這樣的

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

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

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

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

假設你想爬取這些數據,你開興沖沖的看它的源碼

結果發現,我去,怎么數字變成一個方塊?我們來看看它的 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"

定義你提取后的字體文件

運行之后你在該路徑下,就會生成一個新的字體文件了

打開看就都是數字啦

有了數字字體文件之后,接下來就是對字體加密了,以下這個網站可以對字體加密

http://fontello.com/

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

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

發現這個網站不錯

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

那就轉化一波唄

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

然后就變成這個樣子

選中要加密的字

然后點擊

Customize Codes

這時候就可以對字加密啦!接著點擊右上角,下載加密后的字體文件

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

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

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

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

打開網頁

可以看到數字正常顯示

而源碼

變成了方塊了,字體也指向了shuaib

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

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

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

只轉發并關注,私信小編“資料”即可免費獲取Python的全套資料!



小編推薦:欲學習電腦技術、系統維護、網絡管理、編程開發和安全攻防等高端IT技術,請 點擊這里 注冊賬號,公開課頻道價值萬元IT培訓教程免費學,讓您少走彎路、事半功倍,好工作升職加薪!

本文出自:https://www.toutiao.com/a6749320445327049224/

免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!


鮮花

握手

雷人

路過

雞蛋

相關閱讀

最新評論

 最新
返回頂部
湖北快3 购买技巧