1. 程式人生 > >玩爬蟲封IP是最頭痛的事情!從零搭建異步爬蟲代理池!隨你怎麽封

玩爬蟲封IP是最頭痛的事情!從零搭建異步爬蟲代理池!隨你怎麽封

nic bfc sco nbsp 技術 最大值 sta 服務器壓力 p s

如何使用

安裝 Redis

項目數據庫使用了 Redis,Redis 是一個開源(BSD 許可)的,內存中的數據結構存儲系統,它可以用作數據庫、緩存和消息中間件。所以請確保運行環境已經正確安裝了 Redis。安裝方法請參照官網指南。

進群:125240963 即可獲取數十套PDF哦!

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

運行服務器,啟動 web 服務

技術分享圖片

總體架構

項目主要幾大模塊分別是爬取模塊,存儲模塊,校驗模塊,調度模塊,接口模塊。

  • 爬取模塊 負責爬取代理網站,並將所得到的代理存入到數據庫,每個代理的初始化權值為 INIT_SCORE。
  • 存儲模塊 封裝了 Redis 操作的一些接口,提供 Redis 連接池。
  • 校驗模塊 驗證代理 IP 是否可用,如果代理可用則權值 +1,最大值為 MAX_SCORE。不可用則權值 -1,直至權值為 0 時將代理從數據庫中刪除。
  • 調度模塊 負責調度爬取器和校驗器的運行。
  • 接口模塊 使用 sanic 提供 WEB API 。
技術分享圖片

技術分享圖片

技術分享圖片

刪除權值小於等於 score 的代理

技術分享圖片

sanic 性能測試

使用 wrk 進行服務器壓力測試。基準測試 30 秒, 使用 12 個線程, 並發 400 個 http 連接。

測試 http://127.0.0.1:3289/pop

技術分享圖片

Requests/sec: 3081.87

關閉 sanic 日誌記錄,測試 http://127.0.0.1:3289/

技術分享圖片

技術分享圖片

可以看到其實性能是非常棒的,成功率極高。 wink

實際應用示例

技術分享圖片

技術分享圖片

劃重點:aiohttp supports HTTP/HTTPS proxies

但是,它根本就不支持 https 代理好吧,在它的代碼中是這樣寫的。

技術分享圖片

劃重點:Only http proxies are supported

我的心情可以說是十分復雜的。astonished 不過只有 http 代理效果也不錯沒什麽太大影響,參見上面的測試數據。

參考借鑒項目

    • ProxyPool
    • proxy_pool

玩爬蟲封IP是最頭痛的事情!從零搭建異步爬蟲代理池!隨你怎麽封