如何搭建穩定的代理ip池, 供爬蟲使用
在這篇文章之前, 應該不少人都看過很多搭建代理ip池的文章, 然後發現都是坑, 無法使用。說的比較多的
- 推薦買xx家的代理ip, 賊穩定, 好使(廣告)
- 抓取xx免費代理ip, 然後自己寫一個校驗, 然後寫一個api, 提供給爬蟲使用
第一種方法就不說了, 真的存在幾家不錯的代理ip(別問我誰家的好, 我不知道, 我寫這篇文章就為了推銷我自己寫的項目好伐)
第二種, github上這種項目海了去了, 絕大部分, 在你搭建好以後, 發現爬蟲還是爬不動, 免費代理ip根本無法使用的好伐!稍微好點的haipproxy, 我也用過, 但是不解決根本問題! 絕大部分ip失效太快了! 而且各種錯誤, 爬十個頁面, 能成功一個都算燒高香了。
那麽, 到底為啥免費的代理ip不好使呢?
還有很多人都問到, 那些代理ip商真的有那麽多ip麽?
其實不是, 免費代理ip很多都是掃出來的, 掃ip段, 端口, 特征碼。發現可以使用, 那就是代理ip。
代理ip不好用, 一般是因為以下幾個原因
- 掃到的代理ip是臨時的
- 訪問量太大, 服務器都掛了
- 本來就不是代理ip
- 有驗證
- 本來是http的代理, 你用來訪問https, 那當然不行了!
- 代理異常, 連接中斷, 帶寬被沾滿, 返回錯誤。
如果不想花錢, 那麽就只能自己找到穩定的代理ip, 然後來使用。
而一般的代理池, 都是拿百度、知乎阿、豆瓣阿啥的網址訪問, 成了說明能用, 不成就是失敗。最多加個分值計算什麽的。
之前看了下haipproxy的代碼, 成功率高就得自己寫驗證, 說白了, 在爬蟲使用之前, 先嘗試訪問下, 來提高成功率, 我覺得意義不大。
上面都廢話, 以下才是主要的
其實免費代理ip中, 有極少數的一部分, 是非常穩定的代理服務器, 所以這些服務器就可以長期用來使用。
我抓取到的免費的代理ip, 中, 過濾後剩下的ip的訪問成功率基本在90%+
第一、其實最簡單的方式就是根據服務器開放的端口來判斷, 如果服務器有開放80, 3389, 3306, 22之類的端口, 那麽說明服務器還有別的服務在運行, 掛掉的幾率很小, 如果是政府、學校的服務器, 那麽更加穩定。當然也有可能開放別的端口
第二、服務器的訪問速度判斷, 需要訪問多個不同的網址, 來取平均數, 這樣的訪問速度才比較穩
第三、代理ip的存活時間, 越長越穩定, 當然這個是在你搭建抓取後, 來進行計算。
第四、代理類型的重新檢測, 通過訪問不同的http和https網站, 判斷代理到底是http還是https, 並且進行劃分, http的代理, 那就訪問http網址的時候使用, https的代理給https訪問提供服務, 這樣訪問的幾率才能提高。
所以根據這幾點, 我重新寫了一套代理ip池的項目, 目前抓取ip 4500+, 長期穩定的ip在60+左右, 雖然少,但是相當穩定。
如何搭建穩定的代理ip池, 供爬蟲使用