我有一个基于 goquery 的简单网络抓取工具/蜘蛛,它又使用 net/http。效果很好,直到我访问了一个重定向过多的网站。
Get http://www.example.com/some/path.html: stopped after 10 redirects
但是为什么?它是否重定向到自身?它把我扔进了蜘蛛 jail 吗?我想知道我被重定向到什么 url,以及以什么顺序。
给出错误的函数似乎知道这一点,因为它正在检查一段请求的长度,但我真的不想自己编辑 net/http 包。
这是来自 http://golang.org/src/pkg/net/http/client.go 的函数
func defaultCheckRedirect(req *Request, via []*Request) error {
if len(via) >= 10 {
return errors.New("stopped after 10 redirects")
}
return nil
}
最佳答案
您可以将自己的函数传递给http.Client
,例如:
client := &http.Client{
CheckRedirect: func(req *Request, via []*Request) error {
log.Println("redirect", req.URL)
if len(via) >= 10 {
return errors.New("stopped after 10 redirects")
}
return nil
},
}
关于redirect - 重定向太多,但通过什么路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25312385/