使用Selenium无法设置GitHub的__Host-user_session_same_site Cookie问题
这个__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
相关产品推荐
相关产品推荐

