ProxyPoolGolang 實(shí)現(xiàn)的 IP 代理池
采集免費(fèi)的代理資源為爬蟲提供有效的代理
1、代理池設(shè)計
代理池由四部分組成:
-
Getter:
代理獲取接口,目前有6個免費(fèi)代理源,每調(diào)用一次就會抓取這個6個網(wǎng)站最新的100個代理放入Channel,可自行添加額外的代理獲取接口;
-
Channel:
臨時存放采集來的代理,通過訪問穩(wěn)定的網(wǎng)站去驗(yàn)證代理的有效性,有效則并存入數(shù)據(jù)庫;
-
Schedule:
用定時的計劃任務(wù)去檢測數(shù)據(jù)庫中代理IP的可用性,刪除不可用的代理。同時也會主動通過Getter去獲取最新代理;
-
Api:
代理池的訪問接口,提供get接口輸出JSON,方便爬蟲直接使用。
2、代碼實(shí)現(xiàn)
-
Api:
api接口相關(guān)代碼,提供
get接口,輸出JSON; -
Storage:
數(shù)據(jù)庫相關(guān)代碼,數(shù)據(jù)庫采用Mongo;
-
Getter:
代理獲取的相關(guān)代碼,目前抓取:快代理、代理66、IP181、有代理、西刺代理、guobanjia這個六個網(wǎng)站的免費(fèi)代理,經(jīng)測試這些網(wǎng)站每天更新的可用代理只有六七十個,當(dāng)然也支持自己擴(kuò)展代理接口;
-
Schedule:
定時任務(wù),目前在main.go中以輪詢方式實(shí)現(xiàn),后期會改進(jìn);
-
Util:
存放一些公共的模塊、方法或函數(shù),包含
Config:讀取配置文件config.json; -
其他文件:
配置文件:config.json,數(shù)據(jù)庫配置和代理獲取接口配置;
{
"mongo": {
"addr": "mongodb://127.0.0.1:27017/",
"db": "temp",
"table": "pool",
"event": "event"
},
"host": ":8080"
}
3、安裝及使用
下載代碼:
go get -u github.com/henson/ProxyPool
配置好相應(yīng)的config.json并啟動:
go build ./ProxyPool
使用:
訪問:http://localhost:8080/v1/ip
評論
圖片
表情
