为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我在更改我的用户代理时被拒绝?

为什么我在更改我的用户代理时被拒绝?

Go
HUWWW 2022-01-17 20:10:32
我有一个从 nike.com 获取 robots.txt 文件的简单请求。Go 中的普通 GET 请求会按预期返回文件。在我当前的浏览器(Chrome)中,我可以正常访问该文件。但是,当我尝试将 Go 中的 UA 更改为与浏览器相同时,我收到 403 错误。换句话说,我可以使用 Go 中的默认设置访问该页面,证明我的代码是正确的,但是一旦我更改了 UA,我就会得到 403(即使我的浏览器中的相同 UA 可以工作)。如果我将 UA 更改为随机值(例如“不是我”),那么我会得到 200。为什么我不能使用浏览器的 UA?package mainimport (    "log"    "net/http"    "github.com/davecgh/go-spew/spew")func main() {    var resp *http.Response    var err error    u := "http://www.nike.com/robots.txt"    for _, ua := range []bool{false, true} {        client := &http.Client{}        req, _ := http.NewRequest("GET", u, nil)        if ua == true {            req.Header.Set("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36")        }        resp, err = client.Do(req)        if err != nil {            log.Fatalln(err)        }        log.Println("StatusCode", resp.StatusCode)        spew.Dump(resp.Request)        log.Println("----------------------------")    }}响应:2016/06/22 16:56:57 StatusCode 200(*http.Request)(0xc8200d02a0)({ Method: (string) (len=3) "GET", URL: (*url.URL)(0xc820076280)(http://www.nike.com/robots.txt), Proto: (string) (len=8) "HTTP/1.1", ProtoMajor: (int) 1, ProtoMinor: (int) 1, Header: (http.Header) { }, Body: (io.ReadCloser) <nil>, ContentLength: (int64) 0, TransferEncoding: ([]string) <nil>, Close: (bool) false, Host: (string) (len=12) "www.nike.com", Form: (url.Values) <nil>, PostForm: (url.Values) <nil>, MultipartForm: (*multipart.Form)(<nil>), Trailer: (http.Header) <nil>, RemoteAddr: (string) "", RequestURI: (string) "", TLS: (*tls.ConnectionState)(<nil>), Cancel: (<-chan struct {}) <nil>})编辑:我一直在玩,如果我设置了 Chrome 发送的所有其他标头,那么它就可以工作。
查看完整描述

1 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

您的测试代码使用相同的 HTTP 客户端对象来发送两个请求,这两个请求可能都通过相同的连接。

您是否尝试在不同的连接上发送请求?尝试将您的标志设置为 true 然后 false ,看看它是否总是第二个失败。


查看完整回答
反对 回复 2022-01-17
  • 1 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号