Bagaimana untuk mengkonfigurasi program Go untuk menggunakan proksi tersuai?

Linda Hamilton
Lepaskan: 2024-10-26 08:45:30
asal
906 orang telah melayarinya

How to configure Go programs to utilize a custom proxy?

Menyesuaikan Penggunaan Proksi dalam Program Go

Untuk mengkonfigurasi program Go secara automatik untuk menggunakan proksi, jenis http.Client menyediakan kaedah ProxyFromEnvironment. Kaedah ini meneliti pembolehubah persekitaran HTTP_PROXY dan HTTPS_PROXY untuk menentukan URL proksi yang sesuai.

Dalam coretan kod yang disediakan:

<code class="go">tr := &http.Transport{
    TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
client := &http.Client{Transport: tr}
resp, err := client.Get(url)</code>
Salin selepas log masuk

pengangkutan yang dibuat tidak mengambil kira tetapan proksi. Untuk mendayakan penggunaan proksi, gunakan kaedah ProxyFromEnvironment:

<code class="go">var PTransport = &http.Transport{
  Proxy: http.ProxyFromEnvironment,
}
client := http.Client{
  Transport: PTransport,
}</code>
Salin selepas log masuk

ProxyFromEnvironment mengembalikan URL proksi yang diperoleh daripada pembolehubah persekitaran, mengutamakan HTTPS_PROXY untuk permintaan HTTPS.

Untuk menggunakan proksi tersuai, tentukan pembolehubah persekitaran seperti berikut:

export http_proxy='http://user:password@prox-server:3128'
export https_proxy='http://user:password@prox-server:3128'
export HTTP_PROXY='http://user:password@prox-server:3128'
export HTTPS_PROXY='http://user:password@prox-server:3128'
Salin selepas log masuk

Sampel kod yang disediakan, yang melaksanakan permintaan GET terhadap API jauh, menunjukkan penyepaduan tetapan proksi yang berjaya:

<code class="go">package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {

  var PTransport = & http.Transport {
    Proxy: http.ProxyFromEnvironment
  }
  client: = http.Client {
    Transport: PTransport
  }
  req, err: = http.NewRequest("GET", "https://jsonplaceholder.typicode.com/todos/1", nil)
  req.Header.Add("If-None-Match", `some value`)
  resp, err: = client.Do(req)
  if err != nil {
    panic(err)
  }
  defer resp.Body.Close()

  bodyBytes, err: = ioutil.ReadAll(resp.Body)
  if err != nil {
    panic(err)
  }

  bodyString: = string(bodyBytes)
  fmt.Printf("GET Response = %s \n", string(bodyString))


}</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi program Go untuk menggunakan proksi tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!