Windows Server运行Selenium自动化测试出现Google登录Captcha如何解决
问题解决指南
方案可行性结论
针对你提到的三种解决思路,先明确可行性:
- 普通个人Google账号无法通过管理后台关闭登录Captcha,也没有公开的IP白名单配置入口,Google的登录风控是全局规则,不可单独调整
- 如果你使用的是企业Google Workspace托管账号,可以在Workspace Admin后台配置「异常登录挑战豁免」规则,将测试账号加入豁免列表后可跳过Captcha校验,该规则仅对企业内部托管账号生效
- 通过Selenium添加反检测启动参数是普适性最高、落地成本最低的方案,可规避绝大多数因自动化特征触发的风控校验
有效Selenium配置示例
你可以直接复用以下Chrome启动配置,替换对应参数后即可生效:
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() # 隐藏自动化标识 options.add_argument("--disable-blink-features=AutomationControlled") options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option("useAutomationExtension", False) # 替换为你本地正常运行测试的Chrome浏览器的User-Agent,抹平设备特征差异 options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36") # 必须无界面运行时使用新版无头模式,旧版无头模式触发风控概率极高 options.add_argument("--headless=new") # 调用服务器Chrome的已有用户配置,提前在服务器Chrome手动登录一次目标账号即可复用会话 options.add_argument(r"user-data-dir=C:\Users\你的服务器用户名\AppData\Local\Google\Chrome\User Data") options.add_argument("profile-directory=Default") driver = webdriver.Chrome(options=options)
兜底替代方案
如果上述配置仍然触发Captcha,可采用以下方案彻底绕过登录校验:
- 提前调用Google OAuth2身份API获取目标账号的登录凭证,将凭证直接注入Selenium会话的Cookie中,完全跳过账号密码登录的页面流程
- 测试阶段临时关闭目标账号的两步验证,降低风控等级,测试完成后再恢复配置
内容的提问来源于stack exchange,提问作者Timotej Arnuš
相关产品推荐
相关产品推荐

