集成指南

Power Automate + CaptchaAI:Microsoft Flow CAPTCHA 解决

Microsoft Power Automate(以前称为 Flow)可自动化整个 Microsoft 生态系统和数百种第三方服务的业务流程。当这些工作流程遇到受验证码保护的 Web 表单或 API 时,CaptchaAI可以通过 Power Automate 的 HTTP 连接器解决这些问题。

本指南介绍如何构建 Power Automate 流程,该流程将验证码提交到 CaptchaAI、轮询结果并使用解析的令牌完成表单提交。

真实场景

您的财务团队需要从显示 reCAPTCHA v2 的供应商门户中自动检索数据。 Power Automate 流程无需手动干预:

  1. 接收验证码参数(sitekey、页面 URL)
  2. 将它们发送至 CaptchaAI
  3. 等待解决方案
  4. 使用令牌来验证和检索数据

第 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 作为参数,并接收返回的令牌。

相关文章

下一步

将 CAPTCHA 解决添加到您的 Power Automate 工作流程中 –”获取您的 CaptchaAI API 密钥并建立流程。

相关指南:

该文章已禁用评论。