2012-11-07 20 views
32

Goアプリケーションを特定のUserAgentとして指定しようとしていますが、net/httpでこれを行う方法については何も見つかりません。私はhttp.Clientを作成し、これを使ってGetリクエストをclient.Get()で作成しています。httpリクエストでUserAgentを設定します

クライアントにUserAgentを設定する方法はありますか。

答えて

63

あなたの要求の使用request.Header.Set("key", "value")作成:

package main 

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

func main() { 
     client := &http.Client{} 

     req, err := http.NewRequest("GET", "http://httpbin.org/user-agent", nil) 
     if err != nil { 
       log.Fatalln(err) 
     } 

     req.Header.Set("User-Agent", "Golang_Spider_Bot/3.0") 

     resp, err := client.Do(req) 
     if err != nil { 
       log.Fatalln(err) 
     } 

     defer resp.Body.Close() 
     body, err := ioutil.ReadAll(resp.Body) 
     if err != nil { 
       log.Fatalln(err) 
     } 

     log.Println(string(body)) 

} 

結果:

2012/11/07 15:05:47 { 
    "user-agent": "Golang_Spider_Bot/3.0" 
} 

P.S.をhttp://httpbin.orgはこの種のものをテストするのに驚くべきことです!

+3

httpbin.orgを指摘してくれてありがとう - それについては知らなかった。 – kostix

+2

リダイレクト後にヘッダーを使用する際に問題があります。デフォルトでは使用されません。 Client.CheckRedirectフィールドにカスタム関数を提供する必要があります。 –

+1

"Golang Spider Bot v。3.0"が構文的に正しいとはいえ、あなたが望むものを意味するとは限りません。仕様によると、それは、 "Golang"、 "Spider"、 "Bot"、 "v。"、 "3.0"の5つの製品トークンがあることを意味します。もっと正確なものは「Golang_Spider_Bot/3.0」 を参照してください。http://www.bizcoder.com/the-much-maligned-user-agent-header –

関連する問題