首頁 > 後端開發 > Golang > 主體

golang 怎麼設定代理

PHPz
發布: 2023-04-05 14:53:32
原創
2216 人瀏覽過

在使用golang進行網路請求時,有時需要透過代理程式來存取目標網站。下面我們介紹如何在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))
}
登入後複製

其中http. 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))
}
登入後複製

其中InsecureSkipVerify參數用於跳過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可以指定socks5代理程式位址,httpClient.Get()可以發起網路請求。

設定代理程式也是網路程式設計中很重要的一部分,學習後可以更好的應對實際情況。

以上是golang 怎麼設定代理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板