如何使用Puppeteer(Node.js)实现Google OAuth自动化测试并规避验证拦截
Google OAuth登录自动化测试跳过验证的可行方案
最优方案:绕过前端模拟登录流程,直接调用OAuth API获取凭证
冒烟测试的核心目标是验证你的系统和Google OAuth服务的对接逻辑是否正常,无需测试Google官方登录页的功能,完全可以绕开前端模拟登录的流程:
- 提前在Google Cloud控制台创建专用测试OAuth客户端,为测试账号授权对应权限,提前生成长期有效的refresh token
- 测试运行时调用Google Auth SDK,用预先生成的refresh token直接换取合法的access_token、id_token等凭证
- 将拿到的凭证直接注入测试浏览器的存储(cookie/localStorage),或者直接调用你系统的OAuth回调接口,跳过登录跳转流程
- 敏感凭证(refresh token、客户端密钥)直接存在Jenkins的凭据管理中,避免硬编码泄露
这个方案完全不会触发Google的人机验证逻辑,无需开发额外的验证码适配代码,稳定性最高,适合CI环境自动运行的冒烟测试场景。
备选方案1:持久化Puppeteer用户配置
如果必须验证从点击登录按钮到回调的完整前端链路,可以通过持久化浏览器配置让Google信任测试设备:
- 本地启动Puppeteer时添加参数
--user-data-dir=./google-test-profile,手动完成一次Google登录和验证流程,让Google将当前浏览器标记为可信设备 - 将生成的配置目录加密后存储到CI专用的文件存储服务中
- Jenkins运行测试时先拉取该配置目录,启动Puppeteer时指定加载该用户目录,同时配合
puppeteer-extra-plugin-stealth插件修改浏览器指纹,避免被Google识别为自动化工具
只要不频繁变更测试IP、修改浏览器特征,该方案至少可稳定运行数月不会触发二次验证。
备选方案2:使用Google Workspace企业测试账号
如果你们使用企业版Google Workspace,可联系管理员在后台关闭测试账号的两步验证,或者将CI集群的IP段加入可信列表,登录时可直接输入账号密码完成验证,不会触发SMS/邮箱校验流程。该方案仅适合企业内部测试使用,不建议关闭个人账号的两步验证。
注意:不要使用第三方打码平台、虚拟号收码服务处理验证,这类服务不仅稳定性差,还违反Google服务条款,存在测试账号被封禁的风险。
内容的提问来源于stack exchange,提问作者TomaszPlominski
相关产品推荐
相关产品推荐

