gpt4 book ai didi

go - 无法从cookiejar获取cookie

转载 作者:行者123 更新时间:2023-12-01 22:27:34 25 4
gpt4 key购买 nike

我构建了一个简单的脚本,该脚本在网站上发布,并在网站上执行一些操作(在lego.com上自动执行结帐过程)

这一切都是通过使用带有cookiejar的go http客户端完成的,但是当我尝试在网站上的所有 Activity 之后打印出cookie时,什么都不会打印-不确定我在这里做错了什么。

type Program struct {
taskInfo task.Task
client http.Client
jar *cookiejar.Jar
// Task Specific Variables
maxOrderQty string
sessionID string
sku string
shipMethodUID string
}

HTTP客户端在下面初始化
func (pr *Program) initializeClient() {
pr.jar, _ = cookiejar.New(nil)

pr.client = http.Client{
Timeout: time.Second * 10,
Jar: pr.jar,
}
}

之后,我使用所述客户端向相同的域(GET和POST的混合物)进行了几次调用。当我尝试打印出cookie时,什么也没打印。
func (pr *Program) getSessionCookies() {
log.Debug("Getting Cookies")
u, _ := url.Parse("https://www.lego.com/")
for _, cookie := range pr.jar.Cookies(u) {
fmt.Printf(" %s: %s\n", cookie.Name, cookie.Value)
}
}

最佳答案

Go的http程序包支持默认情况下会重定向,但必须刷新cookie jar ,尤其是在域更改的情况下。

我花了很多时间调试它,发现的解决方案是指定重定向处理程序:

client.CheckRedirect = getRedirectHandler(req, &client)

其中具有以下代码:
func getRedirectHandler(req *Request, client *http.Client) redirectHandler {
fn := func(request *http.Request, via []*http.Request) error {
if req.FollowRedirect {
log.Debug(fmt.Sprintf("Redirecting to %s", request.URL.String()))
jar, err := getCookieJarWithURL(request.URL.String(), req.Cookies)
if err != nil {
return err
}
client.Jar = jar
return nil
}
return errors.New("Redirect not allowed")
}
return fn
}

完整的代码可以在 gist中找到:

我希望可以为您节省一些时间:)

关于go - 无法从cookiejar获取cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59013649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com