Integrations

Power Automate + CaptchaAI:Microsoft Flow CAPTCHA 解决

Power Automate 流程跑到一半被验证码卡住,最直接的解法是:给流程加一个 HTTP 操作,把验证码参数发给 CaptchaAI,轮询拿到 token,再把 token 写回原表单继续提交——全程不需要人工点验证码。

Power Automate(前身是 Flow)能自动化 Microsoft 生态和数百个第三方服务的业务流程,但遇到带 reCAPTCHA v2 的网页表单就会卡死。下面按步骤给出具体操作和参数。

适用场景:财务团队自动取供应商门户数据

一个常见场景:财务团队每天要从某个国际供应商门户里导出对账数据,门户登录页挂着 reCAPTCHA v2,人工点验证码是唯一卡点。用 Power Automate 搭这条流程之后,不需要人再守着屏幕:

  • 流程接收验证码参数(sitekey、页面 URL)
  • 把参数发送给 CaptchaAI
  • 等待识别结果
  • 用拿到的 token 完成登录,抓取数据

提示: reCAPTCHA v2 依赖 Google 脚本,国内网络偶尔会比海外服务器慢——遇到超时先调宽 Do Until 的超时时间,而不是急着排查代码。

第 1 步:新建云端流程

在 Power Automate 里新建一个 即时云流(Instant cloud flow),触发方式选 手动触发器,或者你项目里已经在用的其他触发器都可以。

给触发器加两个输入参数

在手动触发器上加两个文本输入:

参数 说明
sitekey 目标页面的 reCAPTCHA v2 sitekey
pageurl 带验证码页面的完整 URL

第 2 步:把验证码任务提交给 CaptchaAI

加一个 HTTP 操作(Premium 连接器),Method 选 GET,URI 填 https://ocr.captchaai.com/in.php

查询参数:

  • key —— 你的 CaptchaAI API Key
  • method —— userrecaptcha
  • googlekey —— @{triggerBody()['text']}(对应 sitekey 输入)
  • pageurl —— @{triggerBody()['text_1']}(对应 pageurl 输入)
  • json —— 1

解析响应: 再加一个 Parse JSON 操作:

Schema:

{
  "type": "object",
  "properties": {
    "status": { "type": "integer" },
    "request": { "type": "string" }
  }
}

Content:@{body('HTTP')}

第 3 步:校验提交是否成功

加一个 Condition 操作,判断 @{body('Parse_JSON')?['status']} 是否等于 1

结果 处理方式
否(提交失败) 加一个 Terminate 操作,状态设为“Failed”,消息写:Submit error: @{body('Parse_JSON')?['request']}
进入下面的轮询循环

第 4 步:搭建轮询循环

在“是”分支里,加一个 Do Until 循环:

循环条件: @{variables('solveStatus')} 不等于 pending

在循环之前先初始化两个变量:

变量 类型 初始值
solveStatus 字符串 pending
solvedToken 字符串

Do Until 循环内部,依次加入以下操作:

4a. 延迟等待

加一个 Delay 操作,等待 5 秒。

4b. HTTP——轮询识别结果

Method 选 GET,URI 填 https://ocr.captchaai.com/res.php

查询参数:

  • key —— 你的 CaptchaAI API Key
  • action —— get
  • id —— @{body('Parse_JSON')?['request']}
  • json —— 1

4c. 解析 JSON——轮询响应

Schema 跟第 2 步用的一样,不用重新写。

4d. 条件判断——检查识别状态

判断条件:@{body('Parse_JSON_2')?['status']} 是否等于 1

结果 处理方式
是(已识别) 设置变量 solvedToken = @{body('Parse_JSON_2')?['request']},再设置 solveStatus = solved
否,且 requestCAPCHA_NOT_READY 说明报错了,设置 solveStatus = error
否,且 request = CAPCHA_NOT_READY 还在排队中,什么都不做,循环继续下一轮

Do Until 循环上限设置:

限制项 取值
Count 20(最多轮询次数)
Timeout PT3M(3 分钟)

第 5 步:用识别出的 token 完成提交

循环结束后,加一个 Condition 检查 @{variables('solveStatus')},等于“solved”时把 @{variables('solvedToken')} 带入表单提交的 HTTP POST,或者通过邮件、Teams 消息等任意连接器发出去。

提交表单的 HTTP POST 示例:

设置项
Method POST
URI 目标表单的 URL
Body {"g-recaptcha-response": "@{variables('solvedToken')}", "other_field": "value"}

不等于“solved”时,通过 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 连接器用不了 免费版不包含 Premium 连接器 升级到 Power Automate Premium,或改用自定义连接器
Parse JSON 报错 响应体是纯文本,不是 JSON 格式 确认查询参数里带了 json=1
循环一直不停 solveStatus 变量没被正确更新 检查每个“设置变量”操作里的变量名是否完全一致,大小写也要对上
CaptchaAI 返回 403 IP 被限制,或 API Key 填错了 核对 API Key;确认账户是否开启了 IP 白名单
流程整体超时 默认 30 天超时没问题,但单个操作超时是 2 分钟 Do Until 的 Timeout(PT3M)已经覆盖了这种情况;不够用就调大

常见问题

免费版 Power Automate 能跑通这套 CaptchaAI 识别流程吗?

不能直接跑通。HTTP 连接器是 Premium 功能,免费版调用不了。如果暂时没有 Premium 许可,可以考虑用自定义连接器,或者把请求转发到 Azure Functions 再回调。

reCAPTCHA v2 依赖 Google 域名,在国内网络环境下测试会不会经常超时?

有可能比海外环境慢一些,属于正常的网络波动,不是流程逻辑的问题。建议把 Do Until 的 Timeout 和 Count 都调得宽松一点,并优先在网络出口稳定的服务器上运行这条流程。

Do Until 循环轮询了 20 次还没出结果,该怎么排查?

先看 res.php 返回的 request 字段是不是一直是 CAPCHA_NOT_READY——是的话说明还在正常排队,可以适当放宽 Count 上限;如果返回了别的错误码,就要回到第 2 步核对 googlekeypageurl 这些参数是不是传对了。

CaptchaAI 的 API Key 应该怎么安全存储,避免写死在流程定义里?

用 Power Automate 的 环境变量,或者接入 Azure Key Vault 连接器,都能避免把 API Key 明文写进流程定义里。

除了 HTTP 连接器,能不能把 CaptchaAI 封装成自定义连接器复用?

可以,封装成一个自定义连接器(Custom Connector):

  • /in.php —— 提交任务
  • /res.php —— 轮询结果

多个流程直接复用,参数和错误处理也统一维护。

相关文章

主题 文章
回调处理 如何用 API 处理 reCAPTCHA v2 回调
同站集成 reCAPTCHA v2 与 Turnstile 同站处理
机制详解 reCAPTCHA v2 回调机制详解

下一步

把验证码识别加入你的 Power Automate 工作流——获取 CaptchaAI API Key,按上面的步骤搭好流程。

相关指南:

  1. Zapier + CaptchaAI:无代码验证码解决方案
  2. Make(Integromat)+ CaptchaAI 集成
  3. Retool + CaptchaAI:内部工具验证码处理
该文章已禁用评论。