【问题标题】:Set UserAgent in http request在 http 请求中设置 UserAgent
【发布时间】:2012-11-07 05:17:44
【问题描述】:

我正在尝试让我的 Go 应用程序将自己指定为特定的 UserAgent,但找不到任何关于如何使用 net/http 执行此操作的信息。我正在创建一个http.Client,并使用它通过client.Get() 发出Get 请求。

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

【问题讨论】:

    标签: http-headers go


    【解决方案1】:

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

    附: http://httpbin.org 测试这种东西真是太棒了!

    【讨论】:

    • 重定向后使用标头存在问题 - 默认情况下不会使用它们。您应该在 Client.CheckRedirect 字段中提供自定义功能。
    • 只想指出,虽然“Golang Spider Bot v. 3.0”在语法上是正确的,但它可能并不意味着你想要的。根据规范,这意味着有 5 个产品令牌:“Golang”、“Spider”、“Bot”、“v.”和“3.0”。更准确的是“Golang_Spider_Bot/3.0”参见:bizcoder.com/the-much-maligned-user-agent-header
    • medium.com/@joshroppo/… 组合以使该版本变为动态
    猜你喜欢
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2021-08-05
    • 2011-06-24
    相关资源
    最近更新 更多