首頁 > 後端開發 > Golang > 主體

如何在 Go 中使用帶有自訂傳輸的代理程式?

Susan Sarandon
發布: 2024-10-26 05:24:30
原創
667 人瀏覽過

How to Use a Proxy with a Custom Transport in Go?

Go 程式用於自訂傳輸的代理程式使用

在Go 中,您可以設定標準函式庫的http.Client 以自動使用基於代理的代理關於環境變數。但是,當使用自訂傳輸時,不直接支援此功能。

解決方案是利用 http.ProxyFromEnvironment 方法。此方法根據 HTTP_PROXY 和 HTTPS_PROXY 等環境變數傳回用於給定請求的代理 URL。

要在Go 中使用具有自訂傳輸的代理,請按照以下步驟操作:

  1. 建立自訂http.Transport 實例:

    <code class="go">tr := &http.Transport{
        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
    }</code>
    登入後複製
  2. 使用ProxyFromEnvironment 設定代理網址:

    <code class="go">var PTransport = &http.Transport{Proxy: http.ProxyFromEnvironment}</code>
    登入後複製
  3. 使用自訂傳輸建立http.Client:

    <code class="go">client := http.Client{Transport: PTransport}</code>
    登入後複製
  4. 使用自訂傳輸建立http.Client:
  5. 使用自訂傳輸建立>
    <code class="go">resp, err := client.Get(url)</code>
    登入後複製
    使用客戶端發出請求:

<code class="go">package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    var PTransport = &http.Transport{Proxy: http.ProxyFromEnvironment}

    client := http.Client{Transport: PTransport}
    resp, err := client.Get("https://jsonplaceholder.typicode.com/todos/1")
    if err != nil {
        panic(err)
    }

    bodyBytes, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }

    fmt.Printf("GET Response = %s \n", string(bodyBytes))
}</code>
登入後複製
這裡是程式碼示範此方法的範例:

請記住為您的代理程式伺服器適當設定HTTP_PROXY 和HTTPS_PROXY 環境變數。

以上是如何在 Go 中使用帶有自訂傳輸的代理程式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!