You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Python Selenium浏览器中执行fetch需手动添加Cookie吗?

问题分析与解决

你的核心认知没错——浏览器环境下的fetch默认会自动携带当前域名的Cookie,但返回"session is expired"说明请求没有正确带上有效的会话Cookie,以下是具体原因和解决办法:

为什么Cookie没被自动携带?

  • 跨域请求限制:如果https://example.com和当前浏览器打开的页面不是同域(包括子域名、端口不同),fetch默认的credentials参数是"same-origin",这种情况下不会携带跨域Cookie。
  • Cookie上下文问题:你执行execute_script的上下文可能和当前登录会话的上下文不一致(比如在新的iframe、新标签页里执行,而这些环境没有登录Cookie)。
  • Cookie本身已过期:浏览器里的会话Cookie本来就已经失效了,就算fetch带上也会被服务端判定为过期。

解决办法

1. 针对跨域请求修改fetch配置

如果是跨域请求,在fetch的配置里添加"credentials": "include",让请求自动携带跨域Cookie:

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",
            "credentials": "include"  // 新增这一行
            })
            .then(json => json.json());
        ''')

2. 手动携带Cookie(特殊场景)

如果默认方式无法携带Cookie,你可以通过Selenium获取当前浏览器的Cookie,手动拼接到fetch的请求头中:

# 获取当前浏览器的所有Cookie
cookies = driver.get_cookies()
# 拼接成Cookie头格式:name1=value1; name2=value2
cookie_header = "; ".join([f"{c['name']}={c['value']}" for c in cookies])

# 执行带Cookie头的fetch
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",
                "Cookie": arguments[0]  // 使用传入的Cookie头
            },
            "body": null,
            "method": "GET"
            })
            .then(json => json.json());
        ''', cookie_header)

3. 验证Cookie有效性

先在浏览器的开发者工具里(Application -> Cookies)检查目标域名下的会话Cookie是否存在且未过期,如果Cookie本身已经失效,需要先重新登录获取有效Cookie。

内容的提问来源于stack exchange,提问作者Glisten STAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:41:17