Apabila menggunakan golang untuk membuat permintaan rangkaian, kadangkala anda perlu mengakses tapak web sasaran melalui proksi. Di bawah ini kami memperkenalkan cara menyediakan proksi dalam golang.
Gunakan proksi http untuk menggunakan proksi secara automatik apabila mengakses permintaan http Kodnya adalah seperti berikut:
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)) }
di mana http.ProxyURL(proxyUrl)
Anda boleh menentukan alamat proksi dan client.Get()
boleh memulakan permintaan rangkaian.
Jika anda perlu mengakses permintaan http dan https pada masa yang sama, anda boleh menggunakan kod berikut:
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)) }
di mana InsecureSkipVerify
Parameter yang digunakan untuk melangkau pengesahan sijil https.
Menggunakan proksi socks5 mempunyai banyak kelebihan, termasuk keselamatan yang lebih baik dan tidak dikenali. Kodnya adalah seperti berikut:
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)) }
di mana proxy.SOCKS5
boleh menentukan alamat proksi socks5 dan httpClient.Get()
boleh memulakan permintaan rangkaian.
Menetapkan ejen juga merupakan bahagian penting dalam pengaturcaraan rangkaian Selepas belajar, anda boleh menangani situasi sebenar dengan lebih baik.
Atas ialah kandungan terperinci Bagaimana untuk menyediakan proksi dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!