太多的重定向,但通过什么路线?

时间:2014-08-14 15:52:49

标签: redirect go

我有一个简单的基于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
}

1 个答案:

答案 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
    },
}