ホームページ >バックエンド開発 >Golang >Go でカスタム トランスポートでプロキシを使用する方法は?

Go でカスタム トランスポートでプロキシを使用する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-26 05:24:30761ブラウズ

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 を使用してプロキシ URL を設定します:

    <code class="go">var PTransport = &http.Transport{Proxy: http.ProxyFromEnvironment}</code>
  3. カスタム トランスポートを使用して http.Client を作成します:

    <code class="go">client := http.Client{Transport: PTransport}</code>
  4. クライアントを使用してリクエストを作成します:

    <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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。