go proxy 最快捷的代理抓取工具

來源:互聯網
上載者:User

golang-proxy v2.0

Golang-Proxy -- 簡單高效的免費代理抓取工具通過抓取網路上公開的免費代理,來維護一個屬於自己的高匿代理池,用於網路爬蟲、資源下載等用途。


golang-proxy

Version 2.0

  1. 不再依賴 MySQL 和 NSQ
  2. 之前需要分別啟動publisherconsumerassessor,現在 只需要啟動主程式 即可!
  3. 提供了高度靈活的 API 介面,在啟動主程式後,即可通過在瀏覽器訪問localhost:9999/alllocalhost:9999/random 直接擷取抓到的代理!甚至可以使用 localhost:9999/sql?query=來執行 SQL 陳述式來自訂代理篩選規則!
  4. 提供 WindowsLinuxMac 開箱即用版
    Download Release v2.0

安裝

1. 通過編譯源碼

go get github.com/storyicon/golang-proxy

進入到 golang-proxy 目錄,執行 go build main.go,執行產生的二進位的執行程式即可。

注意:
go build 的過程中可能出現cannot find package "github.com/gocolly/col1ly" in any of 等找不到包的情況,根據提示的地址 go get 即可

# 比如如果在 go build main.go 的時候提示business\publisher.go:8:2: cannot find package "github.com/gocolly/col1ly" in any of:        F:\Go\src\github.com\gocolly\col1ly (from $GOROOT)        D:\golang\src\github.com\gocolly\col1ly (from $GOPATH)        C:\Users\Administrator\go\src\github.com\gocolly\col1ly        D:\ivank\src\github.com\gocolly\col1ly執行 go get github.com/gocolly/col1ly 即可

如果覺得麻煩,可以使用 /bin 目錄中提供的 開箱即用 版本。

2. 開箱即用版本

Release 頁面根據系統內容提供了一些壓縮包,將他們解壓後執行即可。

開箱即用版下載地址: Download Release v2.0

3. Tips

項目根目錄下的 ./source 是項目執行必須的檔案夾,裡面儲存了各類網站源,其他的檔案夾儲存的均為項目源碼。所以在編譯後得到二進位程式 main 檔案後,即可將 main 檔案和 source 檔案夾一同移動到任意地方,main 檔案可以任意命名。
如果提示找不到 source檔案夾, 你可以在執行程式時加上-source=參數來指定source檔案夾路徑,例如:

# xxx填source檔案夾的相對或者絕對路徑main -source=xxx

API 介面

在程式運行後,可以通過在瀏覽器訪問以下介面擷取資料庫中抓取到的代理。

1. 隨機擷取一條代理

地址: http://localhost:9999/random返回樣本:{    //狀態代碼0表示成功,1表示錯誤    "code": 0,    "message": [{        "id": 124,        "content": "http://190.2.144.133:1080",        //評估次數,次數越多,代表代理存活時間越長        "assess_times": 13,        //評估成功次數,success_times/assess_times可以得到評估成功率        "success_times": 11,        //平均回應時間,單位為秒        "avg_response_time": 2.0831538461538464,        //連續評估失敗次數,是分數計算的重要指標        "continuous_failed_times": 0,        //分數,分數越高,代理品質越高        "score": 3.2747991296955083,        //插入時間戳記(秒)        "insert_time": 1532324791,        //更新時間戳記(秒)        "update_time": 1532414960    }]}

2. 擷取所有可用代理

地址: http://localhost:9999/all

3. 執行 SQL

地址: http://localhost:9999/sql/query=xxxx將xxxx替換為要執行的sql語句即可,程式配置了兩張表:valid_proxy 存放高可用代理crawl_proxy 抓取到的代理的緩衝表(代理品質不能保證)例如: http://localhost:9999/sql/query=SELECT * FROM VALID_PROXY WHERE 1 ORDER BY SCORE DESC將會將所有的可用代理按照分數倒序並返回。

為什麼要用 Golang-Proxy

  1. 穩定、快速。
    抓模數塊,單核並發可以到達 1000 個頁面/秒
  2. 高可配置性、高拓展性。
    你不需要寫任何代碼,花一兩分鐘填寫一個設定檔就可以添加一個新的網站源。
  3. 評估功能。
    通過 Assessor 評估模組,周期性測試代理程式品質,根據代理的測試成功率、高匿性、測試次數、突變性、響應速度等獨立影響因子進行綜合評分,演算法具有高度可配置性,可以根據項目的需要可以對因子的權重進行獨立調整。

如何配置一個新的源

./source/下的所有 yml 格式的檔案都是,你可以增加源,也可以通過在檔案名稱前加上一個 . 來使程式忽略這個源,當然你也可以直接刪除,來讓一個源永遠的消失,下面進行 Source 參數介紹:

#Page配置項page:    entry: "https://xxx/1.html"    template: "https://xxx/{page}.html"    from: 2    to: 10#publisher將會首先抓取entry,即 https://xxx/1.html#然後根據 template、from 和 to 依次抓取#  https://xxx/2.html#  https://xxx/3.html#  https://xxx/4.html#  ...#  https://xxx/10.html
#Selector配置項selector:    iterator: ".table tbody tr"    ip: "td:nth-child(1)"    port: "td:nth-child(2)"    scheme: "td:nth-child(3)"    filter: ""# 以上配置用於抓取下面這種 HTML 結構# <table class="table">#     <tbody>#         <tr>#             <td>187.3.0.1</td>#             <td>8080</td>#             <td>HTTP</td>#         <tr>#         <tr>#             <td>164.23.1.2</td>#             <td>80</td>#             <td>HTTPS</td>#         <tr>#         <tr>#             <td>131.9.2.3</td>#             <td>8080</td>#             <td>HTTP</td>#         <tr>#     <tbody># <table># 選取器為通用的JQuery選取器,iterator為迴圈對象,比如表格裡的行,每行一條代理,那這個行的選取器就是iterator,而ip、port、protocal則是在iterator選取器的基礎上進行子項目的尋找。# protocal為空白,或protocal對應的元素無法找到,則預設是HTTP類型
category:    # 並行數    parallelnumber: 1    # 對於這個源,每抓取一個頁面    # 將會隨機等待5~20s再抓下一個頁面    delayRange: [5, 20]    # 間隔多長時間啟用一次這個源    # @every 10s , @every 10h...    interval: "@every 10m"debug: true

Request For Comments

  1. 使用中任何問題提 issues 即可
  2. 如果發現了新的好用的源,歡迎提交上來分享
  3. 來都來了點個 Star 再走唄 : )
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.