ホームページ  >  記事  >  バックエンド開発  >  Golangでプロキシを設定する方法

Golangでプロキシを設定する方法

PHPz
PHPzオリジナル
2023-04-05 14:36:322155ブラウズ

golang を使用してネットワーク リクエストを行う場合、プロキシ経由でターゲット Web サイトにアクセスする必要がある場合があります。以下では、golang でプロキシを設定する方法を紹介します。

  1. http プロキシを使用する

http プロキシを使用すると、http 要求にアクセスするときにプロキシを自動的に使用します。コードは次のとおりです:

func main() {
    proxyUrl, _ := url.Parse("http://127.0.0.1:8080")
    client := &http.Client{
        Transport: &http.Transport{
            Proxy: http.ProxyURL(proxyUrl),
        },
    }
    resp, err := client.Get("http://www.baidu.com")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(string(body))
}

wherehttp.ProxyURL(proxyUrl) はプロキシ アドレスを指定でき、client.Get() はネットワーク リクエストを開始できます。

  1. http および https プロキシを使用する

http リクエストと https リクエストに同時にアクセスする必要がある場合は、次のコードを使用できます:

func main() {
    proxyUrl, _ := url.Parse("http://127.0.0.1:8080")
    client := &http.Client{
        Transport: &http.Transport{
            Proxy: http.ProxyURL(proxyUrl),
            TLSClientConfig: &tls.Config{
                InsecureSkipVerify: true,
            },
        },
    }
    resp, err := client.Get("https://www.baidu.com")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(string(body))
}

whereInsecureSkipVerifyパラメータは、https 証明書の検証をスキップするために使用されます。

  1. socks5 プロキシを使用する

socks5 プロキシを使用すると、セキュリティや匿名性の向上など、多くの利点があります。コードは次のとおりです。

func main() {
    dialer, err := proxy.SOCKS5("tcp", "127.0.0.1:1080", nil, proxy.Direct)
    if err != nil {
        fmt.Println(err)
        return
    }
    httpClient := &http.Client{Transport: &http.Transport{Dial: dialer.Dial}}
    resp, err := httpClient.Get("http://www.google.com")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(string(body))
}

このうち、proxy.SOCKS5 は sock5 プロキシ アドレスを指定でき、httpClient.Get() はネットワーク リクエストを開始できます。

エージェントのセットアップもネットワーク プログラミングの重要な部分であり、学習後は実際の状況にうまく対処できるようになります。

以上がGolangでプロキシを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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