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

Susan Sarandon
Freigeben: 2024-10-26 05:24:30
Original
667 Leute haben es durchsucht

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>
    Nach dem Login kopieren
  2. Legen Sie die Proxy-URL mit ProxyFromEnvironment fest:

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

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

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

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!