帮助文档>操作指南>调用方式 > 隧道代理(动态请求)Go语言代码示例

隧道代理(动态请求)Go语言代码示例

发布时间:2025-11-21 14:32

普通模式

  1. package main
  2. import (
  3.  "fmt"
  4.  "io/ioutil"
  5.  "net/http"
  6.  "net/url"
  7.  "sync"
  8.  "time"
  9. )
  10. func main() {
  11.  authKey := "请改成您的Key"
  12.  password := "请改成您的AuthPwd"
  13.  proxyServer := "请改成您的隧道地址" //如:tunnel3.qg.net:19263
  14.  targetURL := "https://ip.cn/api/index?ip=&type=0"
  15.  rawURL := fmt.Sprintf("http://%s:%s@%s", authKey, password, proxyServer)
  16.  proxyUrl, _ := url.Parse(rawURL)
  17.  client := http.Client{
  18.  Transport: &http.Transport{
  19.  Proxy: http.ProxyURL(proxyUrl),
  20.  },
  21.  }
  22.  req, _ := http.NewRequest("GET", targetURL, nil)
  23.  rsp, err := client.Do(req)
  24.  if err != nil {
  25.  fmt.Printf("request failed: %s\n", err)
  26.  return
  27.  }
  28.  defer rsp.Body.Close()
  29.  body, err := ioutil.ReadAll(rsp.Body)
  30.  if err != nil {
  31.  fmt.Println(err)
  32.  } else {
  33.  fmt.Println(string(body))
  34.  }
  35. }

打标记模式

  1. package main
  2. import (
  3.  "fmt"
  4.  "io/ioutil"
  5.  "net/http"
  6.  "net/url"
  7.  "sync"
  8.  "time"
  9. )
  10. /** 返回内容
  11.  当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
  12.  当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
  13.  当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
  14.  当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
  15.  当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
  16.  当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
  17.  当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
  18.  当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
  19.  当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
  20.  当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
  21.  当前 IP:14.118.211.116 来自于:中国 广东 江门 电信
  22. */
  23. func main() {
  24.  authKey := "请改成您的Key" 
  25.  password := "请改成您的AuthPwd" 
  26.  proxyServer := "请改成您的隧道的地址" //如:tunnel3.qg.net:19263
  27.  targetURL := "https://ip.cn/api/index?ip=&type=0"
  28.  rawURL := fmt.Sprintf("http://%s:%s@%s", authKey, password, proxyServer)
  29.  proxyUrl, _ := url.Parse(rawURL)
  30.  client := http.Client{
  31.  Transport: &http.Transport{
  32.  ProxyConnectHeader: http.Header{
  33.  "Proxy-TunnelID": []string{"channel-1"}, // 在CONNECT连接中新增Proxy-TunnelID打标记
  34.  "Proxy-TTL": []string{"10"}, // Proxy-TTL指定该标记IP的存活时间
  35.  },
  36.  Proxy: http.ProxyURL(proxyUrl),
  37.  },
  38.  }
  39.  // 因为标记的存活时间是10s,所以循环11次中有10次的IP是一样的。
  40.  // 第11次因为标记的IP到期了,系统会自动替换IP
  41.  wg := sync.WaitGroup{}
  42.  wg.Add(11)
  43.  for i := 0; i < 11; i++ {
  44.  go func() {
  45.  defer wg.Done()
  46.  req, _ := http.NewRequest("GET", targetURL, nil)
  47.  rsp, err := client.Do(req)
  48.  if err != nil {
  49.  fmt.Printf("request failed: %s\n", err)
  50.  return
  51.  }
  52.  defer rsp.Body.Close()
  53.  body, err := ioutil.ReadAll(rsp.Body)
  54.  if err != nil {
  55.  fmt.Println(err)
  56.  } else {
  57.  fmt.Println(string(body))
  58.  }
  59.  }()
  60.  time.Sleep(time.Second)
  61.  }
  62.  wg.Wait()
  63. }
本文导读

客户热线:4007-567-365

点击联系微信客服