使用爬蟲IP代理的一些認(rèn)知及誤區(qū)
很多朋友陷入了一個(gè)這樣的誤區(qū),他們認(rèn)為,使用了代理IP就能愉快的爬取網(wǎng)站了,然而,當(dāng)他們遇到了困難時(shí),他們的第一反應(yīng)就是:代理IP質(zhì)量有問(wèn)題,不可否認(rèn),這是很有可能的原因,但不僅限于此,還有一些其他原因也是需要考慮的,下面就此列舉了一些常見(jiàn)的限制方式。

Basic Auth
一般會(huì)有用戶授權(quán)的限制,會(huì)在headers的Autheration字段里要求加入;
Referer
通常是在訪問(wèn)鏈接時(shí),必須要帶上Referer字段,服務(wù)器會(huì)進(jìn)行驗(yàn)證,例如抓取京東的評(píng)論;
User-Agent
會(huì)要求真是的設(shè)備,如果不加會(huì)用編程語(yǔ)言包里自有User-Agent,可以被辨別出來(lái);
Cookie
一般在用戶登錄或者某些操作后,服務(wù)端會(huì)在返回包中包含Cookie信息要求瀏覽器設(shè)置Cookie,沒(méi)有Cookie會(huì)很容易被辨別出來(lái)是偽造請(qǐng)求;
也有本地通過(guò)JS,根據(jù)服務(wù)端返回的某個(gè)信息進(jìn)行處理生成的加密信息,設(shè)置在Cookie里面;
Gzip
請(qǐng)求headers里面帶了gzip,返回有時(shí)候會(huì)是gzip壓縮,需要解壓;
JavaScript加密操作
一般都是在請(qǐng)求的數(shù)據(jù)包內(nèi)容里面會(huì)包含一些被javascript進(jìn)行加密限制的信息,例如新浪微博會(huì)進(jìn)行SHA1和RSA加密,之前是兩次SHA1加密,然后發(fā)送的密碼和用戶名都會(huì)被加密;
其他字段
因?yàn)閔ttp的headers可以自定義地段,所以第三方可能會(huì)加入了一些自定義的字段名稱或者字段值,這也是需要注意的。
真實(shí)的請(qǐng)求過(guò)程中,其實(shí)不止上面某一種限制,可能是幾種限制組合在一次,比如如果是類似RSA加密的話,可能先請(qǐng)求服務(wù)器得到Cookie,然后再帶著Cookie去請(qǐng)求服務(wù)器拿到公鑰,然后再用js進(jìn)行加密,再發(fā)送數(shù)據(jù)到服務(wù)器。所以弄清楚這其中的原理,并且耐心分析很重要。