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

如何在访问目标站点前通过Selenium设置Cookie以绕过本地环境的Google SSO重定向

如何在访问目标站点前通过Selenium设置Cookie以绕过本地环境的Google SSO重定向

我完全理解你的困扰——本地访问测试站点时一进去就被跳去Google SSO,想提前设置Cookie绕过去,但Selenium常规的add_cookie必须先加载对应域名的页面,结果每次刚加载主域名就被跳转,根本没机会设Cookie,用子域名的方法虽然能成但又不符合要求,确实头疼。

咱们先理清楚问题根源:Selenium的add_cookie要求当前页面的域名必须和Cookie的域名严格匹配,而你直接访问test.net时立刻被重定向到Google的域名,这时候再设Cookie肯定会报域名不匹配的错误;用about:blank的话,域名是空的,同样不满足匹配要求。

这里有个更靠谱的解决方案,不用依赖子域名或者VPN,就是利用Chrome DevTools Protocol(CDP)直接在浏览器发起请求前给目标域名注入Cookie,具体操作如下:

解决方案:使用CDP预设置Cookie

CDP允许我们绕过Selenium的常规限制,在没有加载目标页面的前提下,直接为指定域名添加Cookie。这样当你第一次访问test.net时,Cookie已经存在,站点就不会触发SSO重定向了。

修改你的get_url方法如下:

def get_url(self, url):
    if os.getenv('GITHUB_ACTIONS', 'false').lower() == 'true':
        self.driver.get(url)
        return
    # 本地环境通过CDP提前为目标域名设置Cookie
    cookie_params = {
        'name': '_oauth2_proxy_qs_staging',
        'value': self.cookie,
        'domain': 'test.net',
        'path': '/',
        'secure': True,  # 因为你的站点是HTTPS,需要开启这个属性
        'httpOnly': False,  # 根据实际Cookie的属性调整,若原Cookie是httpOnly则设为True
        'sameSite': 'Lax'  # 可选,根据站点Cookie的SameSite属性设置
    }
    # 调用CDP命令添加Cookie
    self.driver.execute_cdp_cmd('Network.setCookie', cookie_params)
    # 现在直接访问目标站点,Cookie已经生效
    self.driver.get(url)
    time.sleep(3)

为什么这个方法可行?

CDP的Network.setCookie命令是直接和浏览器内核交互的,它不需要当前页面处于目标域名下,只要指定正确的domain参数,就能把Cookie提前写入浏览器的Cookie存储中。这样当你后续访问test.net时,浏览器会自动携带这个Cookie,站点验证通过后就不会跳转到Google SSO了。

注意事项

  • 确保你使用的是Chromium内核的浏览器(Chrome、Edge等),CDP对这些浏览器支持最好;如果用Firefox,可以改用WebDriver BiDi的相关API实现类似功能。
  • 要严格匹配原Cookie的属性:比如secure、httpOnly、sameSite这些参数,需要和你实际使用的_oauth2_proxy_qs_stagingCookie保持一致,否则可能不会生效。
  • 不需要先加载任何页面(包括子域名或空白页),直接通过CDP设置后访问目标站点即可。

这个方法完全避开了依赖子域名的限制,也不用VPN,完美适配你本地环境的需求。

备注:内容来源于stack exchange,提问作者Faith Berroya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 12:40:30