跳到主要内容

Captcha(验证码)

读取挑战、执行它,并守望挑战以确认答案被接受。

用途

在一个节点里让流程通过一道挑战关卡。它读取挑战、执行答案(打字、拖动、旋转或点击),然后在判定是否真的解开之前验证挑战的状态。

SolvedUnsolved 是真实端口而非输出标志,因为在"我们过没过"上分支正是放置本节点的意义。

何时用

  • 一道挑战关卡挡住你端到端掌控的流程。
  • 你需要流程自动通过一个例行验证步骤。

何时不用

  • 读任意文本——用 Read Text
  • 找图像——用 Find Image
  • 可以提示操作员的场合。 人比任何自动求解器都可靠。
负责任地使用

只对你拥有或明确获授权自动化的系统使用本节点。挑战关卡的存在是为执行某项政策;绕过你无权绕过的关卡可能违反服务条款。

前提

挑战区域及其类型是不可再简的最低要求:没有它们就无从读起,也无从知道怎么读。

七种挑战类型

类型挑战答案形态
text需读出并打出的扭曲字符文本
math需读出并计算的算式数字
slider需水平拖入缺口的滑块拖动偏移
puzzle需拖入凹口的拼图片拖动偏移
rotate需转正的图像角度
clickOrder按指定顺序点击的若干目标有序点集
imageSelect图片网格;点击匹配提示的那些点集

sliderpuzzle 产生相同答案形态,但保持类型独立,好让编辑器说出你实际看到的东西。clickOrderimageSelect 同理:点击顺序里次序有含义,图片选择里没有。

两种模式

模式行为
solveAndApply默认。 读取后打字/拖动,让流程越过关卡
solveOnly高级:把答案发布到变量,不碰输入

如何运行

执行答案不等于解开验证码

节点不会因为打了字就路由 Solved。它之后守望挑战,只有当挑战状态显示答案被接受——消失,或已验证——才路由 Solved。

被拒的挑战通常被换成新的,所以下一次尝试是另一道题,而从拒绝中学到的修正会在下一轮应用。

设置

设置类型范围默认备注
Captcha type选择上述七种必填
Region矩形屏幕百分比必填。 挑战绘制在哪
Mode选择solveAndApplysolveOnlysolveAndApply
Answer field region矩形获焦框答案打到哪
Submit region矩形答案后点击。缺省 = 不提交
Handle region矩形左边缘滑块/拼图:拖动手柄起点。旋转:转盘
Prompt region矩形图片选择:挑战绘制图形提示的位置
Target order列表≤ 8 项点击顺序:按点击次序的目标名。图片选择:提示主题
Grid columnsinteger1–83图片选择网格宽
Grid rowsinteger1–83图片选择网格高
Select countinteger1–163选几格
Max attemptsinteger1–103在一次执行内重读并重试
Timeoutinteger1–120000 ms60000跨所有尝试的整节点预算
Verification delayinteger0–30000 ms1500答案后看之前等多久
Verification timeoutinteger500–30000 ms4000延迟后轮询明确状态的上界
Save results to variables列表≤ 8把输出字段绑到变量

验证延迟是最要紧的旋钮

看得太早读到的是动画,不是结果。默认 1500 ms 处在覆盖真实关卡渲染时间的区间——快站点可调低,慢站点该调高。

节点对你明明看到已被接受的挑战报 Unsolved?几乎总是这个设置要改。

图片选择的 prompt region

当图片选择网格把提示画成图形而非文字时,prompt region 才让挑战可答。没有它,求解器被问的是"哪些格子是一类"——那是另一个、难得多的问题。

Max attempts 不是节点重试

maxAttempts 在一次执行内重读并重试,因为挑战在错误答案后通常会重绘。这与节点级重试策略刻意不同,后者覆盖操作性失败而非错误答案。

端口

端口走它的时机必接
Solved挑战状态确认答案被接受
Unsolved次数用尽仍未被接受否——宽容;未接则优雅结束流程
Failure操作性:无帧、输入被拒、引擎不可用
Cancelled运行被停否——永不被走
Fatal配置无效否——永不被走

FailureUnsolved 刻意不同:一个意味机器坏了,一个意味答案错了。

基础示例

带提交按钮的文本挑战:

  • Captcha type:text
  • Region:扭曲字符图像
  • Answer field region:输入框
  • Submit region:Verify 按钮

实际示例——带干净放弃路径的关卡

UnsolvedFailure 通向不同结局,因为它们是不同问题:一个是答案错,一个是机器坏。

高级示例——solveOnly

当流程需要自己执行答案时用 solveOnly——例如答案须与其他输入结合,或提交控件需要特定手势:

  • Mode:solveOnly
  • Save results to variables:绑定答案输出
  • 然后显式用 Input TextClick

最佳实践

  • 把验证延迟设到匹配站点。 这是影响最大的设置。
  • 分别接 Unsolved 与 Failure。 它们需要不同处理。
  • 给挑战区域一个紧、稳定的矩形。
  • 设提交区域让整道关卡是一个节点。
  • 图片选择时,提示是图形就总设 prompt region。
  • max attempts 保持在 3 左右。 更多很少有用,且每次尝试花一整轮验证。
  • 总有干净的放弃路径。 在一道挑战上永远循环的流程,比会停的流程更糟。

性能笔记

  • 这是产品里最贵的节点。每次尝试是一次读取、一串输入、一段延迟和一轮验证轮询。
  • 最坏 ≈ maxAttempts × (读取 + 执行 + 验证延迟 + 验证超时),受节点超时(默认 60000 ms)限制。
  • 验证延迟每次尝试都付,无论结果;验证超时只在区域始终不稳定时才咬人。
  • 把节点放在 Find Image 检查之后,让它只在挑战真在场时运行。

内存笔记

  • 每次尝试抓取并处理挑战图像;工作集随挑战区域大小。
  • 图片选择的网格求解处理每个格子,所以大网格比 3×3 贵。
  • 运行之间不持久。

常见错误

错误后果修复
验证延迟太短读到动画 → 假 Unsolved调高
把 Unsolved 与 Failure 同等对待把坏引擎掩饰成答案错分别接
区域含周边框架读取差收紧
图形提示网格无 prompt region求解器不知选什么设它
max attempts 设 10运行长、昂贵3 左右
无条件运行每次运行都付成本用 Find Image 把关
留 Solved 不接必接端口接上

故障排查

对明显成功的挑战报 Unsolved。 调高验证延迟——节点在关卡更新前就看了。

总是走 Failure。 是操作性问题,不是答案问题:没抓到帧、输入被拒,或引擎不可用。查设备连接与 input mode。

滑块拖到错的地方。 设 handle region,让拖动从手柄实际所在处开始。

图片选择选错格。 查 grid rows/columns 与 select count,提示是图形就设 prompt region。

节点耗时很久。 maxAttempts × 验证轮次。降低尝试数,或降低验证超时。

FAQ

一次执行内几次尝试? 最多 maxAttempts,默认 3。

默认网格? 3×3 选 3——与所有常见九宫格挑战吻合。

节点会替我打答案吗? solveAndApply 模式会。solveOnly 只发布答案。

之后的 If 能检查验证码结果吗? 能——Node outcome 模式的 If 提供 Captcha solved / Captcha unsolved

整节点预算? 跨所有尝试默认 60000 ms。

相关节点

  • Find Image——检测挑战在场
  • Input Text——solveOnly 模式下打字
  • Click——solveOnly 模式下提交
  • If——之后在验证码结果上分支

相关页面