2016-11-18 13 views
1

私はすでにプロキシgolang HTTPS

プロキシ認証

が、プロキシサーバーのリターン

ヘッダパラメータを渡し、1は認証でプロキシを使用してhttps://www.google.comに得ることを確認しようとしていますプロキシ認証が必要です

コード:

package main 

import (
    "crypto/tls" 
    "encoding/base64" 
    "fmt" 
    "io/ioutil" 
    "net/http" 
    "net/url" 
    "os" 
) 

func main() { 
    req, _ := http.NewRequest("GET", "https://www.google.com.br", nil) 
    req.Header.Set("Host", "www.google.com.br") 

    proxyURL := url.URL{ 
     Host: "IP-HERE:PORT-HEERE"} 

    transport := &http.Transport{ 
     Proxy:   http.ProxyURL(&proxyURL), 
     TLSClientConfig: &tls.Config{}, 
    } 
    client := &http.Client{Transport: transport} 
    req.RequestURI = "" 

    auth := fmt.Sprintf("USER:PASSWORD") 
    basic := "Basic " + base64.StdEncoding.EncodeToString([]byte(auth)) 
    req.Header.Add("Proxy-Authorization", basic) 

    resp, err := client.Do(req) 
    if err != nil { 
     fmt.Printf("erro: %s", err) 
    } 
    fmt.Printf("code: %s", resp.StatusCode) 
    htmlData, err := ioutil.ReadAll(resp.Body) 
    if err != nil { 
     fmt.Println(err) 
     os.Exit(1) 
    } 

    fmt.Println(os.Stdout, string(htmlData)) 
} 

別のパラメータを渡す必要がありますか?

私はhttp://www.google.com.brで成功すると、https ..プロキシ認証なしで1つを実行します。どうして?

答えて

1

解決策が見つかりました。 GolangはCONNECTメソッドでヘッダー・パラメーターを渡しません。パラメーターProxy-Authorizationはプロキシー・サーバーに送信されません。

この問題を解決するには、フィールドTransportConnectHeaderがstruct Transportに追加されました。リリースされるまでこの変更は、この変更はマスターでのみです。

マスターからgolangを使ってこの新しいフィールドをテストするには、githubでプロジェクトを作成して作業しました。

link to golang path

link to project in github that test this new field

関連する問題