問(wèn)題場(chǎng)景
一次性爬取豆瓣的電影TOP250時(shí),被服務(wù)器判定為IP異常,需要登錄才能正常使用
原理
爬蟲會(huì)干擾到正常的服務(wù)器訪問(wèn),所以一般的網(wǎng)站都會(huì)有反爬蟲機(jī)制,主要的原理是:
- 監(jiān)聽(tīng)TCP連接;
- 分析請(qǐng)求中的User-Agent和refer信息;
- 訪問(wèn)時(shí)間間隔短,訪問(wèn)量大
解決方式
python爬取豆瓣電影,被反爬后的解決方式:
-
user_agent
user_agent是瀏覽器類型的詳細(xì)信息,也是瀏覽器提交請(qǐng)求的重要請(qǐng)求頭部字段;
可以提供不同的user_agent,來(lái)繞過(guò)瀏覽器的反爬機(jī)制; -
使用代理和IP輪換
反爬機(jī)制最常用的方式之一是檢測(cè)IP,因此可以更換不同的IP地址來(lái)爬取內(nèi)容; -
設(shè)置訪問(wèn)時(shí)間和間隔
有些網(wǎng)站的會(huì)設(shè)置訪問(wèn)時(shí)間間隔,短時(shí)間訪問(wèn)次數(shù)超過(guò)了默認(rèn)次數(shù),就會(huì)被禁用,因此可以降低訪問(wèn)頻率,設(shè)置長(zhǎng)一點(diǎn)的訪問(wèn)時(shí)間;
自己解決的時(shí)候是加headers,盡可能字段多和詳盡,可以暫時(shí)解決IP被禁用,但是爬取太多頁(yè)面還是會(huì)被禁用,所以為了直接解決這個(gè)問(wèn)題,選擇fake_useragent來(lái)隨機(jī)更換請(qǐng)求頭里的User-Agent字段,達(dá)到繞過(guò)反爬機(jī)制的效果
fake_useragent的使用方法請(qǐng)移步: