Python 從零開始爬蟲(一)——爬蟲偽裝&反“反爬”

文:八九寺真宵?from:SegmentFault (侵刪)

之前提到過累提,有些網(wǎng)站是防爬蟲的见芹。其實事實是,凡是有一定規(guī)模的網(wǎng)站实檀,大公司的網(wǎng)站辈挂,或是盈利性質(zhì)比較強的網(wǎng)站衬横,都是有高級的防爬措施的裹粤≈盏伲總的來說有兩種反爬策略,要么驗證身份遥诉,把蟲子踩死在門口拇泣;要么在網(wǎng)站植入各種反爬機制,讓爬蟲知難而退矮锈。

本節(jié)內(nèi)容就著這兩種反爬策略提出一些對策霉翔。

身份偽裝

就算是一些不知名的小網(wǎng)站,多多少少還會檢查一下headers驗證一下訪者的身份苞笨,大網(wǎng)站就更不用說了(我一次爬網(wǎng)易云的時候债朵,忘記加headers,直接被紅掉)

所以瀑凝,為了讓蟲寶們帶著信息凱旋歸來序芦,我們要教會爬蟲們?nèi)绾蝹窝b;有時光偽裝也不行粤咪,我們還要教爬蟲具體"如何做人"谚中,讓自己的舉止更像普通人而不是比單身漢手速還快的未知生物。

自定制 Requests Headers

“吾是人寥枝!”——修改user-agent:里面儲存的是系統(tǒng)和瀏覽器的型號版本宪塔,通過修改它來假裝自己是人。

“我從河北省來”——修改referer:告訴服務(wù)器你是通過哪個網(wǎng)址點進來的而不是憑空出現(xiàn)的囊拜,有些網(wǎng)站會檢查某筐。

“餅干!”:——帶上cookie冠跷,有時帶不帶餅干得到的結(jié)果是不同的南誊,試著帶餅干去“賄賂”服務(wù)器讓她給你完整的信息敢辩。

詳細數(shù)據(jù)可以F12捉個包來查看其Requests Headers

headers = {'Referer':'https://accounts.pixiv.net/loginlang=zh&source=pc&view_type=page&ref=wwwtop_accounts_index',#如某些網(wǎng)站(如p站)要檢查referer,就給他加上

? ? ? ? ? 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36'#每個爬蟲必備的偽裝

? ? ? ? ? }

r = requests.get("https://segmentfault.com/a/1190000014383966",headers=headers)


headers數(shù)據(jù)通常用這兩個即可弟疆,而且筆者強烈推薦在爬蟲中為每個request都配個user-agent戚长,總比什么都沒有好,加了也不會報錯怠苔。

降低主IP訪問頻率

注意:這是針對長期的同廉,大范圍的爬蟲的

有些網(wǎng)站會監(jiān)視某個ip的訪問頻率和次數(shù),一但超過某個閾值柑司,就把你當作爬蟲嫌犯趕出去了迫肖,這時就要想辦法降低自己的存在感了。

Zzzzz——休眠:爬一段時間后休息一會攒驰,不僅是為了自己的成功蟆湖,也是為服務(wù)器著想。

我不去玻粪,我派別人去——ip代理:通過proxies參數(shù)來使用隅津,前提是你要有ip,好的ip代理是要花錢的劲室。

time.sleep(60)#用python自帶time模塊的休眠功能?proxies?=?{'http':?'http://10.10.1.10:3128',#“協(xié)議類型:完整ip地址+端號”????????????'https':?'http://10.10.1.10:1080'}#代理ip字典伦仍,隨機調(diào)用?r?=?requests.get(url,headers=headers,proxies=proxies)

反 反爬(簡析)

在系列第零篇中我提到獲取網(wǎng)頁源碼是有坑的,沒錯很洋,有些時候headers偽裝什么的都做足了充蓝,可你還是不能如愿以償?shù)墨@得正確的網(wǎng)頁源碼,要么缺喉磁,要么給你一堆毫不相關(guān)的東西谓苟,要么干脆讓你紅掉。

這說明要點不是偽不偽裝的問題了协怒,而是如何去解讀網(wǎng)頁的防爬機制從而推出解決方法涝焙,這就要求比較高的觀察和分析能力了。

就我目前遇到的主要有:

隨機校驗碼:網(wǎng)頁生成隨機碼斤讥,并要求你將其提交才接受你的請求(多用在登錄驗證中)纱皆。——這種校驗碼通常藏在網(wǎng)頁源碼中芭商,先取再交是策略派草。

無序網(wǎng)址:網(wǎng)址后跟著一大串看不出規(guī)律的東西☆蹰梗——跟這種東西是沒話說的近迁,直接上selenium。

加密/雜亂的源碼:你知道你要的東西就在那里簸州,但是不知道怎樣提取出來鉴竭∑缙——推理解謎,看腦子好不好使了搏存。

動態(tài)加載:需要和頁面交互才能獲取更多信息瑰步,但是爬蟲沒法和它交互啊¤得撸——直接上selenium/手動捉包分析出目標鏈接

ajax技術(shù):異步加載缩焦,網(wǎng)頁內(nèi)容分次加載,用爬蟲只能得到第一次發(fā)出的html责静,導(dǎo)致信息不全袁滥。——上selenium/手動捉包分析出目標連接

補充:

selenium模塊灾螃,模擬瀏覽器题翻,強是強但是缺點是慢。

其實動態(tài)加載是為了方便用戶點哪看哪的腰鬼,但這也加大了爬蟲的難度嵌赠,因為很多信息因此被隱藏了起來。

最后

偽裝有套路垃喊,代碼直接套猾普,多加headers總沒錯。

內(nèi)嵌反爬很靈活本谜,沒有什么固定的代碼格式,要花時間去分析出來偎窘。

本文新出現(xiàn)的方法/模塊乌助,后面會有實例,不要方陌知。

下一篇正式進入網(wǎng)頁解析主題他托,之后就可以開始寫小爬蟲了?(^?^●)?。

原地址:https://segmentfault.com/a/1190000014431323

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末仆葡,一起剝皮案震驚了整個濱河市赏参,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沿盅,老刑警劉巖把篓,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異腰涧,居然都是意外死亡韧掩,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門窖铡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疗锐,“玉大人坊谁,你說我怎么就攤上這事』” “怎么了口芍?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長雇卷。 經(jīng)常有香客問我阶界,道長,這世上最難降的妖魔是什么聋庵? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任膘融,我火速辦了婚禮,結(jié)果婚禮上祭玉,老公的妹妹穿的比我還像新娘氧映。我一直安慰自己,他們只是感情好脱货,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布岛都。 她就那樣靜靜地躺著,像睡著了一般振峻。 火紅的嫁衣襯著肌膚如雪臼疫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天扣孟,我揣著相機與錄音烫堤,去河邊找鬼。 笑死凤价,一個胖子當著我的面吹牛鸽斟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播利诺,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼富蓄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了慢逾?” 一聲冷哼從身側(cè)響起立倍,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侣滩,沒想到半個月后口注,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡胜卤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年疆导,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡澈段,死狀恐怖悠菜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情败富,我是刑警寧澤悔醋,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站兽叮,受9級特大地震影響芬骄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鹦聪,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一账阻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧泽本,春花似錦淘太、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赌莺,卻和暖如春冰抢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背艘狭。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工挎扰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缓升。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓鼓鲁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親港谊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349