Google登录失败,出现HTTP错误400,提示“抱歉,那里出了点问题请重试” 更新:

问题描述

说明/背景

我设置了一个脚本,该脚本在Google Chrome中打开了我们公司的Google网站(并非无头),并在该页面上做了一些自动化工作。偶尔需要刷新登录信息,这对我手动登录来说是什么。在过去的几个月中,直到上周,它一直运行良好。今天我注意到输入服务器的Gmail地址并单击“下一步”按钮后,由于HTTP状态为400的服务器响应,我收到了上述错误消息。

复制步骤

木偶版本:2.0.0
平台/操作系统版本:Windows 10
网址(如果有):https://sites.google.com/..
Node.js版本:v12.13.0

哪些步骤可以重现问题?

  1. 运行一个Puppeteer脚本以打开一个需要登录的Google网站。

    (async () => {
    try {
    const browser = await puppeteer.launch({headless: false,userDataDir: "<ProfileDirectory>"});
    const pageLogin = await browser.newPage();
    await pageLogin.goto('https://sites.google.com/...',{waitUntil: 'networkidle2'});
    ...
    await browser.close();
    }
    catch (error) {
    console.log(error.stacktrace);
    }
    })();
    
  2. 手动输入Gmail地址,然后单击“下一步”。

  3. 获取错误消息“对不起,那里出了点问题。请重试。”服务器返回HTTP状态代码400的结果。

更新:

手动打开Chrome(相同的userDataDir),相应的Google网站仍然照常工作。

解决方法

this post的评论之一提到Google试图阻止Puppeteer,Selenium等的登录。这可能就是为什么您遇到400错误的原因。

前面提到的帖子中最近发表的评论之一是链接a gist和一些可能仍然有效的示例代码,但是还没有尝试过。

,

建议使用剧作家/木偶+ Firefox。谷歌似乎在chrome中添加了一些内容,因此他们可以检测到浏览器是否自动运行

,

在研究Firefox的Puppeteer时,我注意到(1)Puppeteer下载自己正在执行的本地Google Chrome二进制文件,以及(2)我安装的Puppeteer 2.0.0版本已过时。这意味着,Puppeteer实际使用的浏览器可能也已过时。 该解决方案就像将Puppeteer更新到最新版本2.1.1一样容易。