<listing id="fdftx"></listing>

        <address id="fdftx"></address>
        <address id="fdftx"><address id="fdftx"><nobr id="fdftx"></nobr></address></address>
        <address id="fdftx"><listing id="fdftx"><nobr id="fdftx"></nobr></listing></address>

        <address id="fdftx"><nobr id="fdftx"><meter id="fdftx"></meter></nobr></address><address id="fdftx"><th id="fdftx"><progress id="fdftx"></progress></th></address>

          [使用介紹]GO語言如何測試ip代理?

          發布時間:2020-05-24 關注熱度:°C

            GO語言如何檢測ip代理?有的時候我們找到的ip代理并非都是可用的,用過免費代理的就知道這個道理,而有些服務差的代理服務商,他們的IP質量也堪憂。

          GO語言如何測試ip代理

            我們使用爬蟲的時候需要大量代理,但是并不是所有的代理都是有效的。所以在使用代理前,我們應該先檢測下代理是否可用。

            我們可以使用http.Transport設置代理來訪問某個測試地址,如果返回的狀態碼為200,說明這個代理是可用的。

            為了提升代理檢測效率,測試地址盡量使用數據量比較小的站點:

            例如:https://icanhazip.com 和 https://httpbin.org/get

            package main

            import (

            "fmt"

            "log"

            "net/http"

            "net/url"

            "strings"

            "time"

            )

            func ProxyTest(proxy_addr string) (Speed int, Status int) {

            //檢測ip代理訪問地址

            var testUrl string

            //判斷傳來的ip代理是否是https

            if strings.Contains(proxy_addr, "https") {

            testUrl = "https://icanhazip.com"

            } else {

            testUrl = "http://icanhazip.com"

            }

            // 解析代理地址

            proxy, err := url.Parse(proxy_addr)

            //設置網絡傳輸

            netTransport := &http.Transport{

            Proxy: http.ProxyURL(proxy),

            MaxIdleConnsPerHost: 10,

            ResponseHeaderTimeout: time.Second * time.Duration(5),

            }

            // 創建連接客戶端

            httpClient := &http.Client{

            Timeout: time.Second * 10,

            Transport: netTransport,

            }

            begin := time.Now() //判斷代理訪問時間

            // 使用ip代理訪問測試地址

            res, err := httpClient.Get(testUrl)

            if err != nil {

            log.Println(err)

            return

            }

            defer res.Body.Close()

            speed := int(time.Now().Sub(begin).Nanoseconds() / 1000 / 1000) //ms

            //判斷是否成功訪問,如果成功訪問StatusCode應該為200

            if res.StatusCode != http.StatusOK {

            log.Println(err)

            return

            }

            return speed, res.StatusCode

            }

            func main() {

            var speed, status = ProxyTest("http://124.205.155.151:9090")

            if status == 200 {

            fmt.Println(speed, status)

            } else {

            fmt.Println("代理不可用")

            }

            }

            如果大家需要穩定能夠使用的ip代理,那么,IP海是大家最為合適的選擇之一,自建IP池,海量IP地址等你來。

           

          版權聲明:本文為IP海(iphai.cn)原創作品,未經許可,禁止轉載!

          Copyright © www.skldkt.com. All Rights Reserved. IP海 版權所有.
          IP海僅提供中國內IP加速服務,無法跨境聯網,用戶應遵守《服務條款》內容,嚴禁用戶使用IP海從事任何違法犯罪行為。
          ICP備案鄂ICP備19030659號-3 公安備案鄂公網安備42100302000141號 計算機軟件著作權證計算機軟件著作權證 ICP/EDI許可證ICP/EDI許可證:鄂B2-20200106

          微信掃一掃咨詢
          国产福利第一页