在http请求中设置UserAgent

Ale*_*uer 43 go http-headers

我正在尝试让我的Go应用程序将其指定为特定的UserAgent,但无法找到有关如何执行此操作的任何内容net/http.我正在创建一个http.Client,并使用它来发出Get请求client.Get().

有没有办法UserAgent在客户端设置,或者根本没有?

min*_*omi 89

创建请求时使用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))

}
Run Code Online (Sandbox Code Playgroud)

结果:

2012/11/07 15:05:47 {
  "user-agent": "Golang_Spider_Bot/3.0"
}
Run Code Online (Sandbox Code Playgroud)

PS http://httpbin.org测试这种东西真是太神奇了!

  • 感谢指出httpbin.org - 不知道它. (3认同)
  • 重定向后使用标头存在问题 - 默认情况下不会使用标头。您应该在 Client.CheckRedirect 字段中提供自定义函数。 (2认同)
  • 只是想指出,虽然"Golang Spider Bot v.3.0"在语法上是正确的,但它可能并不意味着你想要什么.根据规范,这意味着有5个产品令牌:"Golang","Spider","Bot","v."和"3.0".更准确的是"Golang_Spider_Bot/3.0",请参阅:http://www.bizcoder.com/the-much-maligned-user-agent-header (2认同)