回覆列表
-
1 # 南城醉雪
-
2 # 海陽頂端
先講下具體理論(作者系圖表大師,我也不知是不是原著):
加上headers。這是最基礎的手段。加上了請求頭就可以偽裝成瀏覽器,混過反爬的第一道關卡;反之,連請求頭都不加,網站可以直接看出是程式在訪問而直接拒絕。一般的網站加上User-Agent就可以,反爬嚴格的網站則要加上cookie甚至各種引數都要加上。隨機延時。這是最簡單有效的一種手段。穩定性是大規模爬蟲的另一個核心問題,雖然與效率衝突。許多網站都會統計同一個IP一段時間內的訪問頻率,如果採集過快,會直接封禁IP。不要為了一時爽而不加延時導致幾分鐘後IP就被封24小時,還不如老老實實地加延時慢慢爬一夜爬完。至於延時加多少因各個網站而異,但一般情況下延時個3~5秒就足夠了。如果頁面量實在太大,每次訪問設定的隨時延時也會成為額外大量的時間成本。單個IP快速訪問會有被封的風險,這是就要用代理池,有兩點好處:一是降低某個IP單位時間內的訪問頻率,降低被封風險;二是即使IP被封,也有別的IP可以繼續訪問。代理池有免費和收費的,免費代理可以從許多網站上獲取(這也是一個爬蟲專案),但大部分都沒用,有用的小部分也會很快掛掉;收費代理好一點,但也好不了多少。高質量的代理成本就高了不少,這個要結合專案實際需求來考慮成本。所以,如果網站不封IP就可以不用代理,以免減慢訪問速度,增大被拒的機率。有的網站必須要登入才能訪問,才能爬蟲。以知乎為例,知乎的模擬登入必較簡單,甚至現在都沒有對帳號和密碼加密,直接明文post就可以。請求頭的cookie含有登入資訊,而知乎的cookie壽命較長,所以可以直接在網站上人工登入然後把cookie複製到程式碼中;知乎目前的反爬機制是如果判斷是機器人就封帳號但不封IP——封IP是同樣的機器無法訪問,但卻可以用同樣的帳號在其他機器上訪問;封號是同樣的帳號在各種終端上都無法訪問,但同一臺機器上卻可以換號訪問。基於這種機制,爬知乎就不需要IP代理池而需要的是帳號池。舉另一個例子,騰訊有一個子網站,它也要求必須QQ登入,而且cookie只有6分鐘的壽命,而且一個帳號一天只能訪問130次超過就封號,無論爬得再慢——這種情況下只能搞大量的QQ號進行自動登入並不斷切換。如果有的網站的反爬機制實在太過喪心病狂,各種JS程式碼邏輯十分複雜艱深,那隻能模擬瀏覽器了。模擬瀏覽器其實就是一種自動的瀏覽器訪問,與正常的使用者訪問很類似,所以可以跳過大部分的反爬機制,因為你裝得實在太像正常使用者;不過缺點也很明顯,就是慢。所以可以用requests搞定的優先用requests,實在沒有辦法了再考慮模擬瀏覽器。驗證碼。驗證碼一出就蛋疼了……Python有自動識別影象的包,不過對於大部分網站的驗證碼都無能為力。寫一個自動識別驗證碼的程式理論上不是不行,但是這種複雜的機器學習專案一點都不比爬蟲系統本身難度低,從成本的角度考慮實在是得不償失——何況對於有些網站如谷歌,驗證碼識別是非常困難的。所以對於驗證碼問題,首先是躲過去儘量不要觸發驗證碼,實在觸發了只能乖乖人工去填驗證碼。再說下具體做法:
分散式
通常會有一些教材告訴你,為了爬取效率,需要把爬蟲分散式部署到多臺機器上。這完全是騙人的。分散式唯一的作用是:防止對方封IP。封IP是終極手段,效果非常好,當然,誤傷起使用者也是非常爽的。
模擬JavaScript
有些教程會說,模擬javascript,抓取動態網頁,是進階技巧。但是其實這只是個很簡單的功能。因為,如果對方沒有反爬蟲,你完全可以直接抓ajax本身,而無需關心js怎麼處理的。如果對方有反爬蟲,那麼javascript必然十分複雜,重點在於分析,而不僅僅是簡單的模擬。
換句話說:這應該是基本功。
PhantomJs
這個是一個極端的例子。這個東西本意是用來做自動測試的,結果因為效果很好,很多人拿來做爬蟲。但是這個東西有個硬傷,就是:效率。此外PhantomJs也是可以被抓到的,出於多方面原因,這裡暫時不講。
-
3 # 源哥哥
你知道當年淘寶如日中天的時候,後面跟風的電商是怎麼創業的麼....
爬蟲爬淘寶店鋪,聯絡店主免費幫著建電,包括且不僅包括圖片,評價,說明等.............
阿里跟爬蟲戰鬥是國內第一線的...................
阿里現在的行為判斷全部使用深度學習在做
舉個例子,你登入淘寶的拖動驗證碼,每一個移動座標都記錄給後臺,由深度學習的ai來判斷你是人還是機器。
-
4 # 使用者8677283388485
還是得用代理ip或者秒撥機,也有便宜的,我現在用的這個介面可以免費使用
測試介面:47.52.171.214/pull/getfreeip/
速度很快
-
5 # 使用者7831935085329
感覺還是得藉助代理ip吧,也有便宜的,像我常用的太陽代理動態ip價效比也合適,在購買前聯絡官網客服可以免費測試
round 1:
我早年在阿里“友商”的一家小公司工作過,爬蟲被教做人
後來我聽阿里的某次技術論壇提過一嘴ai反爬蟲
我當真了
信誓旦旦的出來答
r 2:
阿里沒有用ai
r 3:
各路吃瓜說selenium就滿足
r4:
最新驚天爆料,阿里有足夠的ip池
======================================
所以聽什麼阿里的技術論壇完全沒有用..........
他們說的他們自己都不用啊...............
===============分割線=================
跟阿里反爬蟲作對。。。。。
你知道當年淘寶如日中天的時候,後面跟風的電商是怎麼創業的麼....
爬蟲爬淘寶店鋪,聯絡店主免費幫著建電,包括且不僅包括圖片,評價,說明等.............
阿里跟爬蟲戰鬥是國內第一線的...................
阿里現在的行為判斷全部使用深度學習在做
舉個例子,你登入淘寶的拖動驗證碼,每一個移動座標都記錄給後臺,由深度學習的ai來判斷你是人還是機器。
阿里的反爬蟲也是一樣的,經過大資料的積累,依靠深度學習去判斷你是否機器人,準確率2-3年前可能還差點,現在想繞過去就很難了。
所以唯一的辦法就是使用海量的ip自動切換,做雙相的代理切換,分散式的去抓取,一個ip能爬幾條爬幾條,靠無賴手段暴力的抓。
現在阿里識別機器人可能會依靠頁面熱度分析來,因為你爬蟲爬鏈的行為,肯定不符合他積累的正常人訪問的頁面熱點分佈