问题描述
说明/背景
我设置了一个脚本,该脚本在Google Chrome中打开了我们公司的Google网站(并非无头),并在该页面上做了一些自动化工作。偶尔需要刷新登录信息,这对我手动登录来说是什么。在过去的几个月中,直到上周,它一直运行良好。今天我注意到输入服务器的Gmail地址并单击“下一步”按钮后,由于HTTP状态为400的服务器响应,我收到了上述错误消息。
复制步骤
木偶版本:2.0.0
平台/操作系统版本:Windows 10
网址(如果有):https://sites.google.com/..。
Node.js版本:v12.13.0
哪些步骤可以重现问题?
-
运行一个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); } })();
-
手动输入Gmail地址,然后单击“下一步”。
更新:
手动打开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一样容易。