
Ethan Collins
Pattern Recognition Specialist

createTask 返回 taskId;getTaskResult 稍后返回 ready、failed 或错误响应。表单自动化验证码求解器是经过授权的表单工作流中的错误恢复组件,而不是绕过授权的捷径。CapSolver 可以通过文档化的任务 API 提供 reCAPTCHA 解决方案,同时您的应用程序可以保留输入、浏览器上下文、同意和最终提交规则。最安全的顺序是检测、快照、创建一个任务、设置截止时间轮询、在同一个会话中应用结果,并验证表单自身的确认状态。本文以 reCAPTCHA v2 为例,因为其当前的 CapSolver 任务字段和响应是文档化的。仅将此模式应用于合法、合理、负责任的自动化。不要用于进入私人、受限、敏感或未经授权的区域,或在未经用户许可的情况下提交数据。
表单自动化验证码求解器应在必填字段通过本地验证且工作流确认存在 CAPTCHA 后才开始。存储一个脱敏的快照标识符,而不是将个人表单值复制到日志中。待处理的提交必须与一个 URL、用户授权的目的和浏览器上下文保持关联。
reCAPTCHA v2 任务指南 定义了 ReCaptchaV2TaskProxyLess、websiteURL 和 websiteKey。createTask 合同 解释了任务创建,而 getTaskResult 合同 定义了轮询结果。自动化集成中心 提供了面向浏览器的替代路径。
此 Python 辅助工具创建一个任务并在 120 秒截止时间后停止。它有意仅在状态为 ready 时返回文档化的 gRecaptchaResponse 字段:
import os
import time
import requests
API_KEY = os.environ["CAPSOLVER_API_KEY"]
CREATE_URL = "https://api.capsolver.com/createTask"
RESULT_URL = "https://api.capsolver.com/getTaskResult"
def solve_form_recaptcha(page_url: str, site_key: str) -> str:
created = requests.post(CREATE_URL, json={
"clientKey": API_KEY,
"task": {
"type": "ReCaptchaV2TaskProxyLess",
"websiteURL": page_url,
"websiteKey": site_key,
},
}, timeout=30).json()
task_id = created.get("taskId")
if not task_id or created.get("errorId"):
raise RuntimeError(created.get("errorDescription", "task creation failed"))
deadline = time.monotonic() + 120
while time.monotonic() < deadline:
time.sleep(2)
result = requests.post(RESULT_URL, json={
"clientKey": API_KEY,
"taskId": task_id,
}, timeout=30).json()
if result.get("status") == "ready":
return result["solution"]["gRecaptchaResponse"]
if result.get("status") == "failed" or result.get("errorId"):
raise RuntimeError(result.get("errorDescription", "task failed"))
raise TimeoutError("stop: CAPTCHA task deadline exceeded")
输入是完整的授权页面 URL 和公共站点密钥。输出是文档化的响应令牌。停止条件是缺少 taskId、API 错误、failed 或截止时间。如果在轮询期间页面 URL、表单状态标识符、用户或预期操作发生变化,表单适配器也必须停止。
在表单自动化验证码求解器返回后,不要从日志中重建表单。恢复相同的内存或浏览器会话,通过站点的文档化客户端集成应用结果,并提交一次。受保护的应用程序仍需负责服务器端验证。《reCAPTCHA 服务器验证模型》解释了站点后端如何验证响应。《HTML 表单提交算法》说明了为何控件和提交状态应保持一致。
登录自动化 reCAPTCHA 工作流 展示了如何将验证检查点附加到特定的授权操作。注册 CAPTCHA 测试模式 提供了相关的表单状态示例。
领取您的 CapSolver 奖励代码
立即提升您的自动化预算!
在充值 CapSolver 账户时使用奖励代码 CAP26,每次充值可获得额外 5% 奖励——无限制。
现在在您的 CapSolver 仪表板 中领取
表单自动化验证码求解器需要为 READY_TO_SUBMIT、REVIEW、CANCELLED 和 EXPIRED 提供单独的结果。网络超时、验证更改、第二个 CAPTCHA、操作更改或过期的同意记录必须转到 REVIEW 或 CANCELLED,而不是另一个静默提交。
当决定哪些传输失败可以重试时,HTTP 语义标准 很有帮助。OWASP 日志记录指南 支持脱敏审计事件。存储请求标识符和终端状态,而不是个人表单值或原始令牌。
测试有效输入、检查点前的验证失败、任务创建错误、轮询超时、更改的表单值、重复的 CAPTCHA、被拒绝的服务器验证和成功确认。通过的表单自动化验证码求解器测试必须证明仅发生了一次授权表单提交,并且出现了预期的确认页面或应用响应。
对于故障排除,自动化验证码失败检查清单 有助于分类时间相关和参数错误。reCAPTCHA 回调工作流 可帮助开发人员在他们拥有的系统上识别正确的客户端集成点。
可靠的表单自动化验证码求解器保留一个授权表单状态,使用文档化的 CapSolver 任务字段,设置截止时间轮询,恢复精确的待处理操作,并验证应用的确认。每个模糊状态都应停止以供审查。自动化他们运营或有权使用的表单的团队可以评估 CapSolver 作为验证码恢复步骤。
对于文档化的 reCAPTCHA v2 无代理任务,它需要任务类型、完整页面 URL、公共网站密钥以及 API 环境中的 CapSolver 客户端密钥。
当状态为 ready 时,文档化的解决方案包含 gRecaptchaResponse。在相同的授权会话中消费它,并验证表单的最终状态。
使用适合工作流的固定截止时间。示例在 120 秒后停止,并且不会自动启动第二个任务。
不。应用程序必须确认实际的表单结果,例如已知的路由、收据或成功响应。