首页 > 解决方案 > Puppeteer - 授权设备 (2FA)

问题描述

有没有办法授权 Puppeteer 进行 2FA 身份验证?

设想:

  1. 运行 Puppeteer 并访问受 2FA 保护的 URL
  2. 输入凭据并等待重定向
  3. 请求一次性密码
  4. 输入密码
  5. 等待重定向
  6. 关闭 Puppeteer 实例

  7. 运行 Puppeteer 并访问受 2FA 保护的 URL

  8. 应加载受保护的页面,不再要求输入密码

这种情况在我的情况下不起作用:(

任何其他可以成功通过这种情况的库?

标签: puppeteertwo-factor-authenticationone-time-password

解决方案


使用 puppeteer 处理 2FA 有两种可能的情况,具体取决于情况的性质(从您提出问题的方式来看并不完全清楚)。

  1. 复制会话数据(在这种情况下,你不能让别人第二次为你提供代码,你需要在未来完全绕过它):

我将假设您正在处理的站点正在浏览器上执行某种分析,以确定是否提示输入 2FA 代码。以我的经验,有时会有一个你无法控制的随机元素,但复制确切的浏览器状态(用户数据、cookies、一切)是一个开始。将其与之前已正确回答的一致 IP 地址配对,我认为机会非常非常好。

在这里查看我的代码,或者如果太重,这里是我用来保存会话数据的函数的简单实现:简单代码。简而言之,我正在转换会话数据、cookies——所有能够区分 chromium 实例并将其填充到 base64 字符串中的东西,然后我只需加载该数据并假设浏览器之前的确切状态。我很确定这就是你想要的。

  1. 互动机器人

我不确定这是否适用于您的用例,但我遇到了一种情况,我需要在 puppeteer 正在执行登录过程时从用户的电话/电子邮件中实时提取 2FA 代码。浏览器无法重新启动,因为 2FA 代码将不再有效。这不是一个小问题。我最终使用了 Redis 并构建了一个框架puppeteer-theater,它在我遇到的几乎所有抓取/自动化工作流程中解决了这个用例。

如果您正在寻求具体帮助,请随时与我们联系。


推荐阅读