Maison >développement back-end >Golang >Comment utiliser un proxy avec un transport personnalisé dans Go ?

Comment utiliser un proxy avec un transport personnalisé dans Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-26 05:24:30764parcourir

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

Programmer Go pour une utilisation proxy avec un transport personnalisé

Dans Go, vous pouvez configurer le http.Client de la bibliothèque standard pour utiliser automatiquement un proxy basé sur les variables d'environnement. Cependant, lors de l'utilisation d'un transport personnalisé, cette fonctionnalité n'est pas directement prise en charge.

La solution consiste à utiliser la méthode http.ProxyFromEnvironment. Cette méthode renvoie l'URL du proxy à utiliser pour une requête donnée en fonction de variables d'environnement telles que HTTP_PROXY et HTTPS_PROXY.

Pour utiliser un proxy avec un transport personnalisé dans Go, suivez ces étapes :

  1. Créez une instance http.Transport personnalisée :

    <code class="go">tr := &http.Transport{
        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
    }</code>
  2. Définissez l'URL du proxy à l'aide de ProxyFromEnvironment :

    <code class="go">var PTransport = &http.Transport{Proxy: http.ProxyFromEnvironment}</code>
  3. Créez un http.Client avec le transport personnalisé :

    <code class="go">client := http.Client{Transport: PTransport}</code>
  4. Utilisez le client pour faire des requêtes :

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

Voici un code exemple illustrant cette approche :

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

N'oubliez pas de définir les variables d'environnement HTTP_PROXY et HTTPS_PROXY de manière appropriée pour votre serveur proxy.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn