尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Skyvern 2FA 如何把邮件或短信验证码推送到自动登录流程?

Skyvern 2FA 如何把邮件或短信验证码推送到自动登录流程? Skyvern 2FA 如何把邮件或短信验证码推送到自动登录流程【免费下载链接】skyvernAutomate browser based workflows with AI项目地址: https://gitcode.com/GitHub_Trending/sk/skyvern当目标网站在登录时要求邮箱或短信验证码而不是 Authenticator App 的 TOTP 密钥时Skyvern 本身收不到这条验证码需要你把它从邮箱或短信转发通道推送到 Skyvern。本文描述这条推送链路创建带 email/text 类型 2FA 标识的凭据、搭建验证码转发、启动带totp_identifier的登录任务、通过POST /v1/credentials/totp推送验证码最后用验证码历史接口核对登录是否完成。适用于使用 Skyvern Cloud API或 SDK的开发者前提是已有SKYVERN_API_KEY并且你的邮箱或短信可以通过过滤器、Webhook 等方式程序化转发。推送式 2FA 的匹配机制Skyvern 的推送式 2FA 靠一个标识符把“正在等待验证码的运行”和“你推来的验证码”对应起来启动登录任务时传入totp_identifier通常是接收验证码的邮箱地址或手机号验证码到达时向 Skyvern 推送同名的totp_identifier加验证码内容运行遇到 2FA 提示页后Skyvern 开始轮询已推送的验证码每 10 秒一次最长等待 15 分钟超时会失败。两处totp_identifier必须完全一致否则 Skyvern 不会把推送的验证码匹配到当前运行。凭据里的 2FA 类型要与验证码到达渠道对应email表示验证码发到邮箱text表示发到短信两者都是“推给 Skyvern”的类型与authenticator不同后一种由 Skyvern 本地生成。步骤一创建带 2FA 标识的密码凭据在 Skyvern Cloud UI 的 Credentials 页面新建一个 password 类型凭据展开Two-Factor Authentication折叠区选择Email或Text Message然后填入接收验证码的邮箱地址或手机号Email 方式下该字段会自动从 Username 填入。选择 Email/Text Message 而不是 Authenticator App正是告诉 Skyvern“这个凭据的 2FA 靠外部推送”。通过 API 创建时对应字段在credential对象里curl -X POST https://api.skyvern.com/v1/credentials \ -H x-api-key: $SKYVERN_API_KEY \ -H Content-Type: application/json \ -d { name: Acme Portal Login, credential_type: password, credential: { username: userexample.com, password: secure_password, totp_type: email } }示例中的邮箱、密码均为文档示例值替换为你自己的账户信息。totp_type用email或text取决于验证码实际到达的渠道。步骤二打通验证码转发链路Skyvern 只负责接收转发由你自己的管线完成。文档给出两类常见渠道的搭建方式按你的验证码到达渠道二选一。邮件渠道Gmail 过滤器 Zapier Webhook此方案需要 Zapier Pro 计划账户。创建 Zap 的步骤在 zapier.com 新建 ZapTrigger 选择Email by Zapier触发事件选New Inbound Email在 Email 配置里创建一个专用收件地址后文简称“Zapier 邮箱”添加 ActionWebhooks by Zapier事件选POST配置 POST 请求指向 Skyvern 的 TOTP 接口URL:https://api.skyvern.com/v1/credentials/totpPayload Type:jsonData:totp_identifier取Raw To Email邮件收件地址即凭据里的标识符content取Body Plain邮件正文source固定填emailHeaders:x-api-key填你的 Skyvern API key到 Gmail 设置 → Forwarding and POP/IMAP →Add a forwarding address填入上述 Zapier 邮箱地址并完成验证在Filters and Blocked Addresses里新建过滤器匹配目标站点的 2FA 邮件勾选Forward it to并指向 Zapier 邮箱地址。端到端测试方法把一封历史 TOTP 邮件转发到 Zapier 邮箱在 Zapier 的 Webhooks action 的 “Test” 里发送测试请求成功后会看到 “A request was sent to Webhooks by Zapier” 提示。短信渠道Twilio Function为 Twilio 号码配置一条函数把收到的短信转发到同一个 TOTP 接口event.To是你的 Twilio 号码作为标识符event.Body是短信内容// Twilio Function exports.handler async function(context, event, callback) { const axios require(axios); await axios.post(https://api.skyvern.com/v1/credentials/totp, { totp_identifier: event.To, // Your Twilio phone number content: event.Body, source: phone }, { headers: { x-api-key: context.SKYVERN_API_KEY, Content-Type: application/json } }); return callback(null, new Twilio.Response()); };代码中的SKYVERN_API_KEY需要作为环境变量添加到 Twilio Function 的配置里。然后在 Twilio 号码设置里把A Message Comes Inwebhook 指向该 Function 的 URL。手动兜底UI 直接推码转发链路搭建前可以先用 UI 手动验证整条登录流程打开 Credentials 页面的2FA标签页在Push a 2FA Code表单填入Identifier接收验证码的邮箱/手机号和Verification content完整邮件/短信正文或仅验证码本身Skyvern 会自动提取数字。多个运行同时进行时可展开Add optional metadata用 workflow run ID、workflow ID 或 task ID 把验证码绑定到特定运行。步骤三带 totp_identifier 启动登录用 SDK 的loginhelper 或 REST 接口启动登录任务并传入与推送端一致的totp_identifierresult await client.login( credential_typeskyvern, urlhttps://portal.example.com/login, credential_idcred_xyz789, totp_identifieruserexample.com, # 必须与推送验证码时的标识符一致 )curl -X POST https://api.skyvern.com/v1/run/tasks/login \ -H x-api-key: $SKYVERN_API_KEY \ -H Content-Type: application/json \ -d { credential_type: skyvern, url: https://portal.example.com/login, credential_id: cred_xyz789, totp_identifier: userexample.com }credential_id、url替换为你的凭据 ID 和实际登录页地址$SKYVERN_API_KEY是你本地导出的 Skyvern API key 环境变量。步骤四验证码到达时推送给 Skyvern验证码到达后由转发链路自动推送或手动推送调用send_totp_code或 REST 接口await client.send_totp_code( totp_identifieruserexample.com, contentYour verification code is 123456, # 完整邮件/短信正文 sourceemail, )curl -X POST https://api.skyvern.com/v1/credentials/totp \ -H x-api-key: $SKYVERN_API_KEY \ -H Content-Type: application/json \ -d { totp_identifier: userexample.com, content: Your verification code is 123456, source: email }两点行为说明均以文档为准content超过 10 个字符时Skyvern 会用 AI 自动从中提取验证码因此可以直接推送整封邮件或整条短信的正文不需要自己先解析出数字source是自由文本标签供你自己追踪来源如email_forwarder、twilio_webhook。推送接口的文档示例响应如下示例结果非固定值{ totp_code_id: tc_abc123, totp_identifier: userexample.com, code: 847291, source: email_forwarder, created_at: 2025-01-15T10:30:00Z }如果多个运行共用同一个totp_identifier推送时可用task_id、workflow_id或workflow_run_id参数把这条验证码关联到具体运行这是 UI 里Add optional metadata的 API 等价物。验证结果三层核对验证码是否被 Skyvern 收到——查询验证码历史接口curl -X GET https://api.skyvern.com/v1/credentials/totp?totp_identifieruserexample.comlimit10 \ -H x-api-key: $SKYVERN_API_KEY支持totp_identifier、workflow_run_id、otp_typetotp或magic_link、limit默认 50最大 200过滤返回按时间倒序排列的历史记录。UI 的2FA标签页也有同样的历史记录表标识符、提取出的验证码、来源、关联运行、时间戳可用于确认验证码收到了并送到了正确的运行。注意运行时轮询只使用TOTP_LIFESPAN_MINUTES内未过期的验证码历史接口列出记录不代表该记录仍可用于当前运行。运行是否完成——查运行状态的status与failure_reasoncurl -X GET https://api.skyvern.com/v1/runs/YOUR_RUN_ID \ -H x-api-key: $SKYVERN_API_KEY失败时看现场——下载 recording 和 final screenshot 制品确认自动化停在哪一步curl -X GET https://api.skyvern.com/v1/runs/YOUR_RUN_ID/artifacts?artifact_typerecording \ -H x-api-key: $SKYVERN_API_KEY curl -X GET https://api.skyvern.com/v1/runs/YOUR_RUN_ID/artifacts?artifact_typescreenshot_final \ -H x-api-key: $SKYVERN_API_KEY排查验证码没被识别或登录超时文档列出的 2FA 相关错误码与含义ErrorMeaning处理方向NoTOTPVerificationCodeFound轮询超时未收到验证码确认验证码已推送、或转发管线正常工作TOTPExpiredError验证码在填入前失效检查推送延迟文档指出推送延迟超过 30 秒会导致过期FailedToGetTOTPVerificationCode对totp_url的 HTTP 请求失败属于拉取式 2FA检查端点可用性与响应格式具体排查动作确认转发管线在工作手动调一次推送接口用步骤四的 curl再查验证码历史确认记录出现了Zapier 场景下用 Webhooks action 的 Test 验证请求确实发出。核对标识符完全一致login请求里的totp_identifier必须与send_totp_code里的逐字符相同这是“验证码收到了但运行一直等”的最常见原因。控制端到端延迟推送式 2FA 的主要差异在于邮件/短信到达和转发的时延转发管线必须把验证码在超时窗口内10 秒轮询、15 分钟上限送达。可选分支同一条推送链路也支持 magic link如果目标站用一次性登录链接而非数字验证码走的是同一个推送接口把邮件里的完整链接作为content推送即可例如curl -X POST https://api.skyvern.com/v1/credentials/totp \ -H x-api-key: $SKYVERN_API_KEY \ -H Content-Type: application/json \ -d { totp_identifier: userexample.com, content: https://portal.example.com/login?tokenabc123xyz, source: email }Skyvern 会自动识别 URL 并将其归类为 magic link然后导航到该链接完成认证。此时验证码历史里可用otp_typemagic_link过滤查看。以上链路对应的文档来源handle-2fa 指南、Cloud 端 2FA/TOTP 设置、send_totp_code SDK 参考、login helper 参考。遇到更复杂的登录失败CAPTCHA、SSO 跳转、多步登录时可继续参考登录失败排查指南。【免费下载链接】skyvernAutomate browser based workflows with AI项目地址: https://gitcode.com/GitHub_Trending/sk/skyvern创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表