我有一个简单的基于goquery的web scraper / spider,后者又使用net / http。它运行得很好,直到我找到一个有太多重定向的网站。
获取http://www.example.com/some/path.html:在10次重定向后停止
但为什么呢?它重定向到自己吗?它把我扔进了一些蜘蛛监狱吗?我想知道我被重定向的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
}
答案 0 :(得分:2)
您可以将自己的功能传递给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
},
}