反爬机制
一.通過headers反爬蟲:
?
- Basic Auth
?
這是一種古老的、不安全的用戶驗證方式,一般會有用戶授權的限制,會在headers的Autheration字段里要求加入用戶名密碼(明文),如果驗證失敗則請求就會失敗,現在這種認證方式正在被淘汰。
?
- Referer
?
鏈接的來源,通常在訪問鏈接時,都要帶上Referer字段,服務器會進行來源驗證,后臺通常會用此字段作為防盜鏈的依據。
?
?
User-Agent: U-A校驗,瀏覽器在發請求時,會附帶用戶設備類型、系統以及瀏覽器的型號版本。服務器會通過判斷U-A的值來區分不同的瀏覽器。
如果服務器僅僅通過判斷請求的U-A來區分不同瀏覽器。因此:可模擬U-A,即是我們手動指定我們發出去的請求的User-Agent的值。
(一般情況下,使用編程語言提供的第三方網絡庫來發送HTTP請求會有一個默認的U-A,比如requests庫的默認U-A為"python-requests/2.8.1"(后面的版本號可能不同)
?
- Cookie
一般在用戶登錄或者某些操作后,服務端會在返回包中包含Cookie信息要求瀏覽器設置Cookie,沒有Cookie會很容易被辨別出來是偽造請求;
也有本地通過JS,根據服務端返回的某個信息進行處理生成的加密信息,設置在Cookie里面;
- 自定義字段
因為http的headers可以自定義地段,所以第三方可能會加入了一些自定義的字段名稱或者字段值,這也是需要注意的。
?
header表現形式:key-value.
User-Agent標示了一個瀏覽器的型號
二.通過用戶行為
真人通過瀏覽器訪問網站的速度(相對程序來講)是很慢的。在較短時間內,發了較多的請求,服務器會認為你是一個 爬蟲。我們可以:用代理IP,轉發我們的請求。
不少網站提供或羅列了一大批代理IP,我們可以抓取下來之后存儲起來,以備不時之需。不過,很多代理IP的壽命都比較短,所以最好有一套完整的機制來校驗已有代理IP的有效性。
三.通過驗證碼限制
這樣的方式與上面的方式相比更加難處理的是,不管你的訪問頻次怎么樣,你都需要輸入驗證碼才行
?
四.基于動態頁面的反爬蟲
跟蹤服務器發送的ajax請求,模擬ajax請求
?
五.通過賬號限制
賬號的作用更多是網站處于功能考慮的,反爬蟲只不過是順便完成的功能。
轉載于:https://www.cnblogs.com/zhaochangbo/p/7652444.html
總結
- 上一篇: NOIP 2016【蚯蚓】
- 下一篇: Open AI Gym简介