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

使用Selenium无法设置GitHub的__Host-user_session_same_site Cookie问题

关于GitHub的__Host-user_session_same_site Cookie无法通过Selenium设置的原因分析

这个__Host-user_session_same_site是GitHub使用的安全前缀Cookie,属于浏览器Cookie安全规范中的严格限制类型,这就是它导致Selenium设置失败的核心原因:

1. __Host-前缀Cookie的强制规范

浏览器对以__Host-开头的Cookie有强制安全要求,必须同时满足以下条件才会允许设置:

  • 必须带有Secure属性,只能通过HTTPS协议传输
  • 不能指定domain属性(必须绑定当前精确域名,不允许跨子域)
  • path必须设置为/(根路径)

只要有一条不满足,浏览器就会拒绝设置该Cookie,抛出UnableToSetCookieException异常。

2. 你的代码问题

你在构造new_cookie时,只保留了name、value、domain、path、expiry这几个字段,丢失了secure属性;另外,导出的Cookie中这个__Host-user_session_same_site可能带有domain值,这也违反了规范——__Host-前缀的Cookie不允许指定domain。

这两个问题叠加,直接触发了浏览器的安全校验,导致设置失败。

3. 修复方案

修改代码,确保保留secure属性,同时对__Host-前缀的Cookie做特殊处理:

with open('cookies.txt', 'r') as f:
    cookies_list = json.load(f)
    for cookie in cookies_list:
        cookie['expiry'] = int(time.time() + 10000)
        # 保留secure属性
        new_cookie = {k: cookie[k] for k in {'name', 'value', 'domain', 'path', 'expiry', 'secure'}}
        # 处理__Host-前缀的Cookie:移除domain,确保path为/
        if cookie['name'].startswith('__Host-'):
            new_cookie.pop('domain', None)
            new_cookie['path'] = '/'
        driver.add_cookie(new_cookie)

这样修改后,__Host-user_session_same_site Cookie的设置就符合浏览器的安全规范了,不会再抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:33:28