Heim >Backend-Entwicklung >Golang >Wie verwende ich einen Proxy mit einem benutzerdefinierten Transport in Go?

Wie verwende ich einen Proxy mit einem benutzerdefinierten Transport in Go?

Susan Sarandon
Susan SarandonOriginal
2024-10-26 05:24:30750Durchsuche

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

Programm Go für Proxy-Nutzung mit benutzerdefiniertem Transport

In Go können Sie den http.Client der Standardbibliothek so konfigurieren, dass er automatisch einen Proxy-basierten verwendet auf Umgebungsvariablen. Bei Verwendung eines benutzerdefinierten Transports wird diese Funktionalität jedoch nicht direkt unterstützt.

Die Lösung besteht darin, die Methode http.ProxyFromEnvironment zu verwenden. Diese Methode gibt die Proxy-URL zurück, die für eine bestimmte Anfrage verwendet werden soll, basierend auf Umgebungsvariablen wie HTTP_PROXY und HTTPS_PROXY.

Um einen Proxy mit einem benutzerdefinierten Transport in Go zu verwenden, befolgen Sie diese Schritte:

  1. Erstellen Sie eine benutzerdefinierte http.Transport-Instanz:

    <code class="go">tr := &http.Transport{
        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
    }</code>
  2. Legen Sie die Proxy-URL mit ProxyFromEnvironment fest:

    <code class="go">var PTransport = &http.Transport{Proxy: http.ProxyFromEnvironment}</code>
  3. Erstellen Sie einen http.Client mit dem benutzerdefinierten Transport:

    <code class="go">client := http.Client{Transport: PTransport}</code>
  4. Verwenden Sie den Client, um Anfragen zu stellen:

    <code class="go">resp, err := client.Get(url)</code>

Hier ist ein Code Beispiel, das diesen Ansatz demonstriert:

<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>

Denken Sie daran, die Umgebungsvariablen HTTP_PROXY und HTTPS_PROXY entsprechend für Ihren Proxyserver festzulegen.

Das obige ist der detaillierte Inhalt vonWie verwende ich einen Proxy mit einem benutzerdefinierten Transport in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn