
Lucas Mitchell
Automation Engineer

createTask返回结果,不需要任何传递模式。CAPTCHA求解轮询会请求任务的状态,而Webhook会让提供方将完成通知发送到你的服务器。这两种模式都会将求解结果带回等待完成授权操作的应用程序中,例如你团队拥有的表单的QA检查。
在CapSolver中,该决策始于所选任务类型及其文档化的响应。工作者不应假定每个成功的任务创建请求都需要第二次请求。同样,接收到任务标识符也不意味着应用程序已经拥有可用的答案。
Webhook术语表条目解释了通用的推送模型。在此,“Webhook”意味着关于求解器任务的服务器到服务器的通知。JavaScript回调在CAPTCHA小部件内部不同:它在浏览器集成中运行,并不会为你的后端创建面向互联网的结果接收器。
此比较涵盖结果传递和应用程序设计。它不提供现成的回调服务器,也不假设提供方交付的未记录保证。
轮询通常是有限工作者的更简单起点;当事件接收器已经是应用程序的一部分时,Webhook变得有吸引力。
| 决策 | 轮询 | Webhook |
|---|---|---|
| 网络方向 | 工作者向提供方请求状态 | 提供方将请求发送到你的接收器 |
| 主要前提 | 存储的任务ID和出站连接性 | 可访问的接收器和确认的交付协议 |
| 等待行为 | 定期检查直到完成或达到限制 | 应用程序等待完成事件 |
| 需要保留的状态 | 任务所有者、截止时间以及查询历史 | 任务所有者、截止时间以及交付状态 |
| 主要操作问题 | 工作者可以进行多少次检查? | 当接收器无法接受事件时会发生什么? |
| 良好的初始匹配 | 小型授权QA任务和现有工作者 | 已经可靠处理事件输入的应用程序 |
该表格描述了架构权衡,而不是声称每个提供方都实现相同的回调功能。提供方特定的协议决定了接收器实际可以依赖的内容。
CapSolver记录了异步结果检索和直接识别响应,因此任务选择应在传输选择之前进行。
createTask规范包含一个可选的callbackUrl,并描述了将令牌发送到该端点的POST请求。该页面未定义完整的回调有效负载模式、签名机制、重试策略或交付顺序协议。在将回调交付视为生产依赖项之前,请确认这些细节。
对于异步任务,getTaskResult参考使用clientKey和taskId。它记录了idle、processing和ready状态;成功完成需要errorId等于零且status等于ready。解决方案结构取决于任务类型。该页面告诉调用者在处理时三秒后重试,并列出每个任务120次查询限制和从创建起五分钟的查询窗口。
不要将该轮询循环应用于每个响应。ImageToTextTask文档描述了由createTask直接返回的识别结果。一个通用包装器如果丢弃直接解决方案并开始等待另一个事件,可能会引入求解器本身未导致的故障。
轮询适合已经拥有浏览器操作、知道其截止时间并能负责任务直到结果到达的工作者。
考虑一个检查暂存应用程序支持表单的QA工作者。该工作者创建一个支持的求解器任务,将任务ID与表单尝试一起记录,并安排状态检查。当结果就绪时,应用程序会检查该表单尝试是否仍然活跃,然后再将答案传递给其授权的集成。
这种安排不需要新的入站端点。它还为工作者提供了一个地方来解释尝试为何结束:求解器返回错误、应用程序截止时间已过,或在结果可用前表单已被替换。
一个实用的轮询设计应明确做出这些选择:
应用程序的截止时间可能比提供方的检索窗口更短。一个仍可查询的结果可能对已导航离开的浏览器页面无关。在工作者结果中记录这种区别,而不是将每个未使用的结果称为求解器失败。
只有当接收器能够识别预期任务、安全处理其结果并解释失败或延迟交付时,Webhook才是一个合理的选择。
对于CapSolver,从文档化的callbackUrl功能开始,并获取缺失的协议细节。询问传递请求中如何标识任务,发送方如何被认证,哪种响应确认接收,以及如果未收到该响应服务会做什么。不要将其他服务的签名头或重试计划复制到CapSolver接收器中。
接收器还需要常规的应用程序保护。OWASP REST安全指南涵盖了HTTPS、请求验证和内容处理。这些是接收器设计原则;它们并不证明特定的回调API提供签名请求。
当传入的有效负载包含解决方案令牌时,应将它们排除在普通请求日志之外。仅存储将交付与预期尝试关联并诊断其状态所需的信息。回调URL不应在查询字符串或日志中暴露CapSolver账户密钥。
如果无法建立发送方认证或关联,请在解决该差距之前优先使用文档化的轮询流程。仅可访问的URL不足以证明你的接收器可以信任和使用通知。
领取你的CapSolver优惠码
立即提升你的自动化预算!
在充值CapSolver账户时使用优惠码 CAP26,每次充值可获得额外 5% 的奖励 —— 无限制。
现在在你的 CapSolver仪表板 中领取
结果传递应为一个当前应用程序尝试生成候选答案,然后进行单独检查以确认预期操作是否完成。
想象一个内部测试页面上的反馈表单。求解结果成功到达,但测试已关闭反馈对话框。你的应用程序应记录答案在尝试结束之后到达。它不应因为结果可用而重新打开对话框或提交无关表单。
使用一个包含明确区分含义的小型应用程序记录:
| 记录字段 | 在你的应用程序中的含义 |
|---|---|
| 尝试参考 | 等待答案的特定表单操作 |
| 提供方任务参考 | 该尝试创建的任务(如适用) |
| 交付来源 | 轮询响应、回调或直接响应 |
| 结果状态 | 已接受使用、被拒绝为意外或不再需要 |
| 应用程序结果 | 预期操作完成、失败或被取消 |
这些是建议的应用程序字段,而不是CapSolver响应模式。其目的是阻止传输事件成为对业务成功的无支持声明。
HTTP状态码的含义也比应用程序完成更狭窄。例如,HTTP 202 Accepted定义说明接受处理并不表示完成。这是一个通用协议区别,而不是CapSolver使用HTTP 202进行任务创建的声明。
只有当两种路径都连接到相同的应用程序决策,并且已确认提供方支持的行为时,才能进行组合设计。
不要让回调处理程序和轮询工作者独立提交同一表单。两者都应报告给可以为预期尝试一次接受结果的所有者。AWS关于幂等API的讨论解释了为什么在操作有副作用时,重复交付或重试需要显式处理。该原则适用于你的消费者设计;它不建立CapSolver任务API的幂等性功能。
结合交付路径会增加更多测试用例。回调可能在轮询请求进行时到达应用程序。所有者必须对后续观察进行分类,而不会再次提交表单操作。如果页面尝试被取消,所有观察都应无法重新启动它。
除非有明确的操作需求,否则从一种经过验证的交付方法开始。在某些系统中,更多路径可以提高可见性,但它们也会增加解释所有权和时间所需的工作量。
比较完整结果路径的运营成本,包括状态请求、接收器维护和失败的应用程序尝试。
轮询消耗计划的工作者活动和重复的API请求。Webhook需要接收器的可用性、请求验证、部署所有权和交付诊断。两种架构都不会自动降低CAPTCHA任务价格或提高识别准确性。
在评估时,收集每个完成任务的状态查询次数、从任务创建到应用程序接收的时间,以及结果在应用程序尝试结束后到达的比例。对于回调,还要记录接收器无法与预期尝试关联的交付次数。避免将令牌包含在这些测量中。
测试缓慢的求解器响应、工作者重启、接收器不可用、取消的表单和重复的完成观察。这些是建议的接受测试,而不是报告的基准结果。在测试前设置可接受的结果,以免“请求返回”成为唯一的成功标准。
当轮询的有限检查适合你的工作者和截止时间时选择轮询。当文档协议和你的接收器都准备就绪时选择回调。对于浏览器回调细节,请参阅查找reCAPTCHA回调的单独指南。
使用CapSolver与支持的任务和你的应用程序可以从创建到预期表单结果都能跟踪的结果路径。
Q: 验证码Webhook是否比轮询更快?
Webhook可以避免等待下一次计划轮询,但它不会使底层验证码解决方案更快。网络传递、接收器处理和应用程序的当前状态仍然会影响答案何时变得有用。在声称延迟改进之前测量完整路径。
Q: CapSolver是否记录签名的回调请求?
链接的createTask页面记录了callbackUrl传递,但没有指定回调签名方案。在部署接收器之前确认支持的认证协议。不要假设来自其他提供方的头或密钥格式适用。
Q: ImageToTextTask结果是否需要轮询?
ImageToTextTask被记录为通过createTask直接返回其识别结果。在决定是否需要另一个结果请求之前,请阅读该响应。
Q: 已就绪的求解器结果是否证明我的表单成功?
已就绪的结果仅表示求解器完成,而不是预期表单操作的成功。你的应用程序必须将答案与当前尝试关联,并验证表单自身的完成结果。