获取站点的站点密钥 reCaptcha

Get the sitekey reCaptcha of a site

我正在使用 puppeteer 创建一个 node.js 脚本来创建一个电子邮件帐户,但我在 reCaptcha 验证方面遇到了问题。 我在 puppeter-extra 中发现了一个插件,可以自动解决 reCaptchas。 (https://www.npmjs.com/package/puppeteer-extra-plugin-recaptcha)

并通过以下网站:https://www.google.com/recaptcha/api2/demo我可以获得脚本来验证我的 reCaptcha 并继续。

但是在https://mail.protonmail.com/create/new?language=en输入邮箱+密码点击按钮继续后,出现reCaptcha但脚本没有解决。为了解决 reCaptcha,需要一个 sitekey 变量,但在网站的源代码中,我找不到它。

如果我检查元素,我实际上可以获得验证码的来源 https://mail.protonmail.com/api/users/captcha/signup 并找到一个名为 "publickey" 的变量,它与我得到的网站中的 'sendKey' 非常相似脚本工作。

我有点卡住了,想知道如何实现它。

Protonmail 的 reCaptcha 不包含站点密钥(它应该以名称 data-sitekey 在源中)。您在 JavaScript 源代码中找到的 publicKey 与 reCaptcha 无关,而是 Angular webapp 本身包含 iframe 中的表单。

通常你应该找到一些类似的容器 html 元素与 sitekey(如在 https://www.google.com/recaptcha/api2/demo 示例中):

<div class="g-recaptcha form-field" data-sitekey="xyz..."></div>

出于安全原因,Protonmail 可能会丢失此信息,他们应用了修改以防止机器人创建帐户。请参阅他们关于人工验证的解释 here


我强烈建议您阅读 Thomas Dondorf's 关于 reCaptcha 和 puppeteer 的回答。