selenium 是否需要在打开的网页浏览器中添加Cookie到API头中?

3z6pesqy  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(146)

现在,我正在使用Python Selify,我想知道一个问题。我正在打开的Web浏览器中运行js脚本

result = driver.execute_script('''
        return await fetch("https://example.com", {
            "headers": {
                "accept": "application/json",
                "accept-language": "en-US,en;q=0.9",
                "traceparent": "00-3e3ff822cf02c630cff68ed054769214-62c0b9ae093c2f05-01",
                "Referrer-Policy": "origin"
            },
            "body": null,
            "method": "GET"
            })
            .then(json => json.json());
        ''')

我的问题是,当我运行js脚本并调用API时,结果返回“会话已过期”。
要解决此问题,我是否要在FETCH标头中添加Cookie?我想,如果js在打开的Web浏览器中运行,Fetch会自动处理Cookie。
我说错了吗?
如果你知道这件事,请回答我。
先谢谢你。

t9eec4r0

t9eec4r01#

您可以设置credentials: "include",以便将cookie和其他与凭据相关的信息(如HTTP身份验证条目和TLS客户端证书)与请求一起发送。你可以在这里阅读更多关于它的信息。
像这样的事情应该会奏效:

return await fetch("https://example.com", {
    "headers": {
        "accept": "application/json",
        "accept-language": "en-US,en;q=0.9",
        "traceparent": "00-3e3ff822cf02c630cff68ed054769214-62c0b9ae093c2f05-01",
        "Referrer-Policy": "origin"
    },
    "body": null,
    "method": "GET",
    "credentials": "include" // <---
})
.then(json => json.json());

相关问题