puppeteer - Puppeteer - 授权设备 (2FA)
问题描述
有没有办法授权 Puppeteer 进行 2FA 身份验证?
设想:
- 运行 Puppeteer 并访问受 2FA 保护的 URL
- 输入凭据并等待重定向
- 请求一次性密码
- 输入密码
- 等待重定向
关闭 Puppeteer 实例
运行 Puppeteer 并访问受 2FA 保护的 URL
- 应加载受保护的页面,不再要求输入密码
这种情况在我的情况下不起作用:(
任何其他可以成功通过这种情况的库?
解决方案
使用 puppeteer 处理 2FA 有两种可能的情况,具体取决于情况的性质(从您提出问题的方式来看并不完全清楚)。
- 复制会话数据(在这种情况下,你不能让别人第二次为你提供代码,你需要在未来完全绕过它):
我将假设您正在处理的站点正在浏览器上执行某种分析,以确定是否提示输入 2FA 代码。以我的经验,有时会有一个你无法控制的随机元素,但复制确切的浏览器状态(用户数据、cookies、一切)是一个开始。将其与之前已正确回答的一致 IP 地址配对,我认为机会非常非常好。
在这里查看我的代码,或者如果太重,这里是我用来保存会话数据的函数的简单实现:简单代码。简而言之,我正在转换会话数据、cookies——所有能够区分 chromium 实例并将其填充到 base64 字符串中的东西,然后我只需加载该数据并假设浏览器之前的确切状态。我很确定这就是你想要的。
- 互动机器人
我不确定这是否适用于您的用例,但我遇到了一种情况,我需要在 puppeteer 正在执行登录过程时从用户的电话/电子邮件中实时提取 2FA 代码。浏览器无法重新启动,因为 2FA 代码将不再有效。这不是一个小问题。我最终使用了 Redis 并构建了一个框架puppeteer-theater,它在我遇到的几乎所有抓取/自动化工作流程中解决了这个用例。
如果您正在寻求具体帮助,请随时与我们联系。
推荐阅读
- javascript - 如何禁用通过透明粘顶菜单查看元素
- javascript - 给定时间和当前时间之间的进度条
- pyiron - 如何访问 pyiron 中的净位移
- azure-devops - 编写 Azure DevOps 构建计划脚本会产生意外结果
- flutter - 根路由和不同的 initialRoute 创建奇怪的 WidgetTree
- android - 在真实设备上运行时,我的应用不会将数据上传到 Firebase
- android - RecyclerView 不显示所有带有 ScrollView 的项目,并且中间项目使用 NestedScrollView 拉伸
- class - 函数结束后对数据成员的修改不会持续存在
- ruby - Vagrantfile:将内联shell脚本的结果分配给变量
- javascript - 创建打字稿类型“接口之一”