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