32
Goアプリケーションを特定のUserAgent
として指定しようとしていますが、net/http
でこれを行う方法については何も見つかりません。私はhttp.Client
を作成し、これを使ってGet
リクエストをclient.Get()
で作成しています。httpリクエストでUserAgentを設定します
クライアントにUserAgent
を設定する方法はありますか。
Goアプリケーションを特定のUserAgent
として指定しようとしていますが、net/http
でこれを行う方法については何も見つかりません。私はhttp.Client
を作成し、これを使ってGet
リクエストをclient.Get()
で作成しています。httpリクエストでUserAgentを設定します
クライアントにUserAgent
を設定する方法はありますか。
あなたの要求の使用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はこの種のものをテストするのに驚くべきことです!
httpbin.orgを指摘してくれてありがとう - それについては知らなかった。 – kostix
リダイレクト後にヘッダーを使用する際に問題があります。デフォルトでは使用されません。 Client.CheckRedirectフィールドにカスタム関数を提供する必要があります。 –
"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 –