<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>
    Allure

    如何驗證爬蟲代理 IP

    分享
  • 安全小白成長記 2 信息安全等級高級測評師 CISP-PTE
    安全小白成長記2 信息安全等級高級測評師 CISP-PTE

    現在爬蟲進步了,很多人也越來越了解到HTTP代理了。網絡爬蟲都清楚,訪問一個網站久了,IP會被限制,這個時候使用地址池就是一個非常明智的選擇。但是搭建地址池不是很難,但是需要去驗證一下才能保證這些地址都是可以訪問的,這里可以使用GO語言爬蟲代碼驗證方式:

     package main          import (             "net/url"             "net/http"             "bytes"             "fmt"             "io/ioutil"         )          // 代理服務器(產品官網 www.16yun.cn)         const ProxyServer = "t.16yun.cn:31111"          type ProxyAuth struct {             Username string             Password string         }          func (p ProxyAuth) ProxyClient() http.Client {              var proxyURL *url.URL             if p.Username != ""&& p.Password!="" {                 proxyURL, _ = url.Parse("http://" + p.Username + ":" + p.Password + "@" + ProxyServer)             }else{                 proxyURL, _ = url.Parse("http://" + ProxyServer)             }             return http.Client{Transport: &http.Transport{Proxy:http.ProxyURL(proxyURL)}}         }          func main()  {               targetURI := "https://httpbin.org/ip"               // 初始化 proxy http client             client := ProxyAuth{"username",  "password"}.ProxyClient()              request, _ := http.NewRequest("GET", targetURI, bytes.NewBuffer([] byte(``)))              // 設置Proxy-Tunnel             // rand.Seed(time.Now().UnixNano())             // tunnel := rand.Intn(10000)             // request.Header.Set("Proxy-Tunnel", strconv.Itoa(tunnel) )              response, err := client.Do(request)              if err != nil {                 panic("failed to connect: " + err.Error())             } else {                 bodyByte, err := ioutil.ReadAll(response.Body)                 if err != nil {                     fmt.Println("讀取 Body 時出錯", err)                     return                 }                 response.Body.Close()                  body := string(bodyByte)                  fmt.Println("Response Status:", response.Status)                 fmt.Println("Response Header:", response.Header)                 fmt.Println("Response Body:n", body)             }         }

    這個方式可以驗證自己的地址池是否可用如果返回響應碼是200就說明你搭建的地址池存活率還是可以的,希望這個方法能幫到你。

  • 寫回答
    亚洲 欧美 自拍 唯美 另类