久久国产精品成人影院|h肉动漫在线观看免费资源|亚洲熟妇色xxxxx欧美老|a片8888|国产成人无码影片在线观看

幫助文檔>代理IP>代碼示例 > 隧道代理(固定時長)Go語言代碼示例

隧道代理(固定時長)Go語言代碼示例

發布時間:2023-03-27 21:39
  1. package main
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "net/http"
  6. "net/url"
  7. "sync"
  8. "time"
  9. )
  10. /** 返回內容
  11. 第一次循環
  12. 當前 IP:121.230.91.188 來自于:中國 江蘇 泰州 電信
  13. 當前 IP:60.184.205.115 來自于:中國 浙江 麗水 電信
  14. 當前 IP:125.112.205.149 來自于:中國 浙江 金華 電信
  15. 當前 IP:60.184.108.175 來自于:中國 浙江 麗水 電信
  16. 當前 IP:58.214.87.31 來自于:中國 江蘇 無錫 電信
  17. 當前 IP:183.143.131.24 來自于:中國 浙江 湖州 電信
  18. 當前 IP:42.53.99.119 來自于:中國 遼寧 錦州 聯通
  19. 當前 IP:59.60.142.70 來自于:中國 福建 漳州 電信
  20. 當前 IP:114.226.175.159 來自于:中國 江蘇 常州 電信
  21. 當前 IP:123.162.194.223 來自于:中國 河南 駐馬店 電信
  22. max channel reached
  23. 第二次循環
  24. 當前 IP:114.226.175.159 來自于:中國 江蘇 常州 電信
  25. 當前 IP:60.184.205.115 來自于:中國 浙江 麗水 電信
  26. 當前 IP:121.230.91.188 來自于:中國 江蘇 泰州 電信
  27. 當前 IP:125.112.205.149 來自于:中國 浙江 金華 電信
  28. 當前 IP:123.162.194.223 來自于:中國 河南 駐馬店 電信
  29. 當前 IP:58.214.87.31 來自于:中國 江蘇 無錫 電信
  30. 當前 IP:183.143.131.24 來自于:中國 浙江 湖州 電信
  31. 當前 IP:60.184.108.175 來自于:中國 浙江 麗水 電信
  32. 當前 IP:59.60.142.70 來自于:中國 福建 漳州 電信
  33. 當前 IP:42.53.99.119 來自于:中國 遼寧 錦州 聯通
  34. 第二次循環返回的IP與第一次循環相同,因為goroutine是異步的,所以返回順序和第一次不一致
  35. myip.ipip.net服務器可能比較容易失敗,用戶可以自己找一個其他獲取客戶端IP的服務器來測試
  36. */
  37. // 固定時長多通道隧道模式
  38. func main() {
  39. authKey := "請改成您的Key" //固定時長1分鐘的隧道,通道數10
  40. password := "請改成您的AuthPwd"
  41. proxyServer := "請改成您的隧道地址" //如:tunnel3.qg.net:19263
  42. targetURL := "
  43. rawURL := fmt.Sprintf("http://%s:%s@%s", authKey, password, proxyServer)
  44. proxyUrl, _ := url.Parse(rawURL)
  45. wg := sync.WaitGroup{}
  46. wg.Add(11)
  47. // 十個通道分別使用不同的十個IP,第十一次會返回錯誤,通道數超出
  48. for i := 0; i < 11; i++ {
  49. go func(index int) {
  50. defer wg.Done()
  51. client := http.Client{
  52. Transport: &http.Transport{
  53. ProxyConnectHeader: http.Header{
  54. "Proxy-TunnelID": []string{fmt.Sprintf("channel-%d", index)}, // 指定通道ID
  55. },
  56. Proxy: http.ProxyURL(proxyUrl),
  57. },
  58. }
  59. req, _ := http.NewRequest("GET", targetURL, nil)
  60. rsp, err := client.Do(req)
  61. if err != nil {
  62. fmt.Printf("request failed: %s\n", err)
  63. return
  64. }
  65. defer rsp.Body.Close()
  66. body, err := ioutil.ReadAll(rsp.Body)
  67. if err != nil {
  68. fmt.Println(err)
  69. } else {
  70. fmt.Println(string(body))
  71. }
  72. }(i)
  73. }
  74. wg.Wait()
  75. // 因為固定時長為1分鐘,所以在1分鐘內繼續使用已有通道,仍是之前的IP
  76. time.Sleep(time.Second * 10)
  77. wg.Add(10)
  78. for i := 0; i < 10; i++ {
  79. go func(index int) {
  80. defer wg.Done()
  81. client := http.Client{
  82. Transport: &http.Transport{
  83. ProxyConnectHeader: http.Header{
  84. "Proxy-TunnelID": []string{fmt.Sprintf("channel-%d", index)}, // 指定通道ID
  85. },
  86. Proxy: http.ProxyURL(proxyUrl),
  87. },
  88. }
  89. req, _ := http.NewRequest("GET", targetURL, nil)
  90. rsp, err := client.Do(req)
  91. if err != nil {
  92. fmt.Printf("request failed: %s\n", err)
  93. return
  94. }
  95. defer rsp.Body.Close()
  96. body, err := ioutil.ReadAll(rsp.Body)
  97. if err != nil {
  98. fmt.Println(err)
  99. } else {
  100. fmt.Println(string(body))
  101. }
  102. }(i)
  103. }
  104. wg.Wait()
  105. }
本文導讀

客戶熱線: