如果你想讓爬蟲取得好的效果,僅僅寫一個好的爬蟲程序是不夠的,因為你的程序很可能一啟動就被網站的反爬蟲策略屏蔽了。所以在爬行之前,我們需要做好以下準備。
防爬策略分析:
(1) 如果一個IP被多次訪問而不使用Cookie,該IP將很快被阻止。
(2) 第一次訪問返回cookie值,連續訪問使用相同的cookie值,幾分鐘后被阻止。用不同的cookie值訪問,大約十分鐘后,IP被阻止。
(3低速(10s以上)單ip訪問不會被封。
(3低速(10s以上)單ip訪問不會被封。
有幾種方法可以防止反爬:
使用隨機用戶代理:最簡單,即使是新手也能做到。
設置爬網間隔:簡單,但大大降低了效率。
Available cookies:找出規則是難是易,需要帶一些經過身份驗證或解密的值來計算。
代理的使用:簡單、粗暴、有效,但是維護代理是一個問題。
因為一個IP無論如何都會被封鎖,所以我已經接受了代理IP,常見的有IP模擬器代理等。
爬蟲的策略大致如下:
三個隨機:隨機Under Armour,隨機代理和隨機cookie。
對于使用免費IP代理:
你可以參考git:jhao104/proxy上的一個開源項目。我試過幾個類似的,這個好像是最好的。它主要是利用flask來制作一個api來實時更新可用的ip。它不僅可以抓取各大免費代理商的ip,還可以定期檢查ip的可用性。然而,這個項目還有一個問題。例如,如果我將捕獲間隔設置為10秒,則任務的執行時間可能會超過10秒,并且會報告一個錯誤,整個程序將暫停。
對于使用付費代理:
如果你想保證爬蟲的質量,可以選擇一個高質量的付費代理IP。
動態IP模擬器以上的準備工作是爬蟲之前的就需要做的,然后再進行爬蟲程序的工作。