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

如何用Puppeteer自动化Google双因素认证以实现Adwords报表下载

这个问题确实挺头疼的——备用验证码用完就没,长期自动化肯定顶不住。给你几个实际可行的解决方案,按优先级排序:

1. 用Google应用专用密码跳过2FA验证

如果你的账号是个人Google账号(开启2FA后就能用)或者Google Workspace账号,这个方法最省心。应用专用密码是Google专门给不支持2FA的应用提供的替代登录凭证,用它登录的话不需要输入OTP:

  • 操作步骤:
    1. 登录你的Google账号,进入「安全」设置页面
    2. 找到「应用专用密码」选项(只有开启2FA后才会显示)
    3. 生成一个新的应用专用密码(可以命名为比如「Puppeteer AdWords」)
    4. 在Puppeteer的登录代码里,用这个应用专用密码代替你的原账号密码,直接登录就不会触发2FA验证了
  • 优点:完全不需要处理OTP,一次设置长期可用
  • 注意:如果你的账号是Google Workspace,需要管理员开启应用专用密码的权限

2. 持久化浏览器会话,一次登录终身(会话期内)免验证

这个思路是把第一次手动登录(包括输入OTP)后的浏览器状态保存下来,后续启动Puppeteer时直接复用:

  • 具体做法:
    在启动Puppeteer时指定userDataDir参数,示例代码:
    const browser = await puppeteer.launch({
      userDataDir: './my-adwords-session', // 自定义本地目录保存浏览器会话数据
      headless: false // 第一次启动需要手动完成登录和2FA验证
    });
    
    第一次启动时关闭headless模式,手动完成登录(输入账号密码+OTP),之后关闭浏览器。后续再启动时,Puppeteer会加载这个目录里的会话数据,直接处于登录状态,不需要再验证。
  • 优点:不需要额外配置,只要会话不过期就一直能用
  • 注意:Google的登录会话可能会定期过期,到时候需要重新手动登录一次更新会话;另外不要共享这个会话目录,里面包含敏感的登录信息

3. 自动生成TOTP验证码(需要保存初始密钥)

如果上面两个方法都用不了,比如没有应用专用密码权限,那可以用TOTP自动生成OTP。Google的2FA是基于TOTP协议的,只要你有当初设置2FA时的初始密钥(就是扫二维码时的那个字符串),就能用代码生成实时OTP:

  • 操作步骤:
    1. 安装TOTP库,比如otplib:npm install otplib
    2. 在代码里用密钥生成OTP:
    const otplib = require('otplib');
    const totpSecret = '你的TOTP密钥'; // 务必妥善保密!
    const otp = otplib.authenticator.generate(totpSecret);
    
    1. 在Puppeteer登录流程中,自动把生成的OTP输入到验证码框里
  • 优点:可以完全自动化,不需要手动干预
  • 注意:必须保存好初始密钥,一旦泄露账号就有风险;另外有些账号可能会限制TOTP的使用(不过Google账号一般没问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:31:33