Microsoft Power Automate(以前称为 Flow)可自动化整个 Microsoft 生态系统和数百种第三方服务的业务流程。当这些工作流程遇到受验证码保护的 Web 表单或 API 时,CaptchaAI可以通过 Power Automate 的 HTTP 连接器解决这些问题。
本指南介绍如何构建 Power Automate 流程,该流程将验证码提交到 CaptchaAI、轮询结果并使用解析的令牌完成表单提交。
真实场景
您的财务团队需要从显示 reCAPTCHA v2 的供应商门户中自动检索数据。 Power Automate 流程无需手动干预:
- 接收验证码参数(sitekey、页面 URL)
- 将它们发送至 CaptchaAI
- 等待解决方案
- 使用令牌来验证和检索数据
第 1 步:创建流程
在 Power Automate 中,使用 手动触发器(或您选择的任何触发器)创建 即时云流。
将输入参数添加到触发器
将两个文本输入添加到手动触发器:
- 站点密钥 – reCAPTCHA v2 站点密钥
- pageurl – 带有验证码的页面的 URL
第2步:提交验证码任务
添加 HTTP 操作(高级连接器):
| 环境 | 价值 |
|---|---|
| 方法 | 得到 |
| 统一资源标识符 | https://ocr.captchaai.com/in.php |
查询:
| 钥匙 | 价值 |
|---|---|
| 钥匙 | 您的 CaptchaAI API 密钥 |
| 方法 | userrecaptcha |
| 谷歌钥匙 | @{triggerBody()['text']}(站点密钥输入) |
| 页面网址 | @{triggerBody()['text_1']}(页面url输入) |
| json | 1 |
解析响应: 在 HTTP 操作之后添加 解析 JSON 操作:
架构:
{
"type": "object",
"properties": {
"status": { "type": "integer" },
"request": { "type": "string" }
}
}
内容:@{body('HTTP')}
第 3 步:验证提交响应
添加 条件 操作:
- 条件:
@{body('Parse_JSON')?['status']}等于1
如果否(提交失败):
- 添加状态为“失败”和消息的 终止 操作:
Submit error: @{body('Parse_JSON')?['request']}
如果是:
- 继续轮询循环
第 4 步:构建轮询循环
在“If Yes”分支内,添加 Do Until 循环:
循环条件: @{variables('solveStatus')} 不等于 pending
在循环之前,初始化两个变量:
- 解决状态(字符串)=
pending - solvedToken (字符串) = 空
在 Do Until 循环内,按顺序添加以下操作:
4a.延迟
添加 延迟 操作:5 秒。
4b. HTTP——轮询结果
| 环境 | 价值 |
|---|---|
| 方法 | 得到 |
| 统一资源标识符 | https://ocr.captchaai.com/res.php |
查询:
| 钥匙 | 价值 |
|---|---|
| 钥匙 | 您的 CaptchaAI API 密钥 |
| 行动 | get |
| ID | @{body('Parse_JSON')?['request']} |
| json | 1 |
4c.解析 JSON – 轮询响应
使用与步骤 2 相同的架构。
4d.条件——检查状态
条件:@{body('Parse_JSON_2')?['status']} 等于 1
如果是(已解决):
- 设置变量
solvedToken=@{body('Parse_JSON_2')?['request']} - 设置变量
solveStatus=solved
如果否:
- 添加另一个条件:
@{body('Parse_JSON_2')?['request']}不等于CAPCHA_NOT_READY - 如果为真(错误),则设置
solveStatus=error - 如果为 false(仍待处理),则不执行任何操作(循环继续)
设置执行直到循环限制:
- 计数:20(最大迭代次数)
- 超时:PT3M(3 分钟)
第5步:使用已解决的代币
在循环之后,添加一个条件来检查@{variables('solveStatus')}:
如果等于“已解决”:
- 在 HTTP POST 中使用
@{variables('solvedToken')}提交表单 - 或者通过电子邮件、Teams 消息或任何其他连接器发送
提交表单的 HTTP POST 示例:
| 环境 | 价值 |
|---|---|
| 方法 | 邮政 |
| 统一资源标识符 | 目标表单 URL |
| 身体 | {"g-recaptcha-response": "@{variables('solvedToken')}", "other_field": "value"} |
如果没有“解决”:
- 通过 Teams 或电子邮件发送错误通知
完整的流程结构
[Manual Trigger (sitekey, pageurl)]
↓
[Initialize Variables: solveStatus, solvedToken]
↓
[HTTP: Submit to CaptchaAI /in.php]
↓
[Parse JSON]
↓
[Condition: status = 1?]
↓ Yes
[Do Until: solveStatus ≠ pending]
├── [Delay: 5 seconds]
├── [HTTP: Poll CaptchaAI /res.php]
├── [Parse JSON]
└── [Condition: Solved or Error?]
↓
[Condition: solveStatus = solved?]
↓ Yes
[HTTP: Submit form with token]
↓
[Compose: Success response]
故障排除
| 问题 | 原因 | 处理方式 |
|---|---|---|
| HTTP 连接器不可用 | 免费计划不包括高级连接器 | 升级到 Power Automate Premium 或使用自定义连接器 |
| 解析 JSON 失败 | 响应正文是文本,而不是 JSON | 确保 json=1 在查询参数中 |
| 循环无限期地运行 | solveStatus 变量未更新 |
在“设置变量”操作中检查变量名称是否完全匹配 |
| CaptchaAI 的 403 错误 | IP限制或API密钥错误 | 验证API密钥;检查您的帐户是否启用了 IP 白名单 |
| 流程超时 | 默认 30 天超时没问题,但单个操作超时为 2 分钟 | Do Until 超时 (PT3M) 可处理此问题;如果需要的话增加 |
常问问题
这是否需要高级 Power Automate 许可证?
是的,HTTP 连接器是一项高级功能。如果使用免费计划,请考虑使用自定义连接器或通过 Azure Functions 进行路由。
我可以解决其他验证码类型吗?
是的。对于 Cloudflare Turnstile,将 method 参数更改为 turnstile;对于图像验证码,将 post 更改为 post。相应地调整所需的参数。
如何安全地存储 API 密钥?
使用 Power Automate 的 环境变量 或 Azure Key Vault 连接器以避免在流定义中对 API 密钥进行硬编码。
我可以从 Power Apps 触发此流程吗?
是的。使用 Power Apps 中的 Power Automate 连接器调用此流,传递 sitekey 和 pageurl 作为参数,并接收返回的令牌。
相关文章
- 如何使用Api解决Recaptcha V2回调
- Recaptcha V2 Turnstile同一站点处理
- Recaptcha V2回调机制
下一步
将 CAPTCHA 解决添加到您的 Power Automate 工作流程中 –”获取您的 CaptchaAI API 密钥并建立流程。
相关指南:
- Zapier + CaptchaAI:无代码验证码解决
- 制作 (Integromat) + CaptchaAI
- Retool + CaptchaAI:内部工具验证码处理