玩爬蟲封IP是最頭痛的事情!從零搭建異步爬蟲代理池!隨你怎麽封
阿新 • • 發佈:2018-08-04
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是最頭痛的事情!從零搭建異步爬蟲代理池!隨你怎麽封