logo
bars

文字 CAPTCHA (ImageToText)
与 CapMonster Cloud

验证码解决方案、网站集成及测试。
接手一个已经部署 captcha 或其他防护的站点,却无法访问源代码?此时最关心的是使用了哪种方案、配置是否正确以及如何测试。

在本文中,我们尽量回答了所有关键问题。要开始解决问题,第一步是确定当前使用的是哪种防护系统。为此,您可以查看常见验证码与反机器人防护系统列表,其中提供了可视化示例和关键特征,帮助您快速判断自己正在使用哪一种方案。

如果您发现自己的网站使用的是 ImageToText,下一步就是更深入地了解它的特性和具体工作方式。在本文中,您还可以查看 ImageToText 的接入说明,以便彻底弄清它在您的网站上是如何运行的。这样一来,您不仅能更好地理解当前的防护机制,还可以更合理地规划后续的维护和支持。

什么是 ImageToText CAPTCHA
什么是 ImageToText CAPTCHA
ImageToText CAPTCHA 是一种经典的网站保护系统,基于从图像中识别文本。用户需要输入图像中显示的字符(字母、数字或组合)。这种方法可以区分真人用户和自动化脚本。通常用于注册、登录、发送消息、评论表单,以及防止批量自动请求。

通过 CapMonster Cloud 解决 ImageToText CAPTCHA

在测试带有 ImageToText CAPTCHA 的表单时,通常需要确认验证码工作正常并已正确集成。
您可以手动测试网站上的验证码:
  • 打开含表单的页面,确保验证码显示。
  • 尝试在未完成验证码的情况下提交表单——服务器应返回错误。
  • 验证码成功通过后,表单应能正常提交。
要自动识别验证码,可以使用专用服务,例如 CapMonster Cloud——该工具接收验证码参数,在其服务器上处理并返回结果。然后将结果填入相应字段,即可无需用户参与完成验证。

通过 CapMonster Cloud API 工作的一般流程:

创建任务创建任务
arrow
发送 API 请求发送 API 请求
arrow
获取结果获取结果
arrow
将 token 应用到页面将 token 应用到页面
arrow
使用现成库识别图像验证码
CapMonster Cloud 提供适用于 PythonJavaScript(Node.js)和 C# 的库,方便使用。
Python
JavaScript
C#
获取结果、填入并提交表单
Node.js 示例展示完整的网页验证码解决流程。方法包括:使用 HTTP 请求获取 HTML 与保护系统参数,提交答案并处理结果。或如下面示例,使用 Playwright 自动化——打开页面、等待验证、通过 CapMonster Cloud 客户端提交参数、获取结果并填入表单字段(可测试正确或错误数据),然后观察结果。

  // npm install playwright @zennolab_com/capmonstercloud-client
  // npx playwright install chromium

import { CapMonsterCloudClientFactory, ClientOptions, ImageToTextRequest, CapMonsterModules } from '@zennolab_com/capmonstercloud-client';
import { chromium } from 'playwright';

const API_KEY = "YOUR_API_KEY"; // 输入您的 CapMonster Cloud API 密钥

async function solveImageToTextAndFillField() {
    const cmcClient = CapMonsterCloudClientFactory.Create(
        new ClientOptions({ clientKey: API_KEY })
    );

    // 如有必要,可检查余额
    const balance = await cmcClient.getBalance();
    console.log("Balance:", balance);

    // 1. 启动 Playwright 并打开表单页面
    const browser = await chromium.launch({ headless: false });
    const context = await browser.newContext();
    const page = await context.newPage();
    await page.goto("https://example.com/form"); // 2. 从页面获取验证码 URL(例如通过 <img> 选择器)

    // 2. 从页面获取验证码 URL(例如通过 <img> 选择器)
    const captchaUrl = await page.getAttribute("#captcha-img", "src");

    // 3. 下载图像并转换为 Base64
    const response = await fetch(captchaUrl);
    const imageBuffer = await response.arrayBuffer();
    const imageBase64 = Buffer.from(imageBuffer).toString('base64');

    // 4. 创建 ImageToText 请求
    const imageToTextRequest = new ImageToTextRequest({
        body: imageBase64,
        CapMonsterModule: CapMonsterModules.YandexWave, // 或其他模块
        Case: true,
        numeric: 0,
        recognizingThreshold: 65,
        math: false
    });

    // 5. 获取验证码结果
    const result = await cmcClient.Solve(imageToTextRequest);
    console.log("Captcha solution:", result.solution.text);

    // 6. 将结果填入表单并提交
    await page.fill("#captcha-input", result.solution.text); // 替换为您的选择器
    await page.click("#submit-button"); // 替换为您的按钮选择器
    await page.waitForLoadState("networkidle");

    console.log("表单已使用验证码结果提交");

    // 7. 关闭浏览器
    await browser.close();
}

solveImageToTextAndFillField().catch(console.error);


  
如何将文字验证码连接到您的网站
为清楚了解网站上的验证码工作原理、验证逻辑或重新配置,建议参考此部分。它描述了保护集成过程,帮助快速掌握所有细节。

步骤 1. 确定方案

首先确定您将如何使用验证码:

方案 1 — 第三方供应商

适用于需要快速部署且维护最少的情况。

优点:

  • 快速集成
  • 现成防机器人保护
  • 无需手动更新算法

缺点:

  • 依赖外部服务
  • 自定义受限

方案 2 — 自定义文字 CAPTCHA

适合需要完全控制和自定义集成的情况。

优点:

  • 完全控制逻辑和设计
  • 无需外部依赖
  • 可适应特定场景

缺点:

  • 需自行实现防机器人保护
  • 需要维护与升级

步骤 2. 实现 CAPTCHA 生成

第三方供应商

  • 注册服务
  • 获取 key(site key / secret key
  • 在表单页面引入脚本

自定义 CAPTCHA

  • 生成随机字符串(数字或字母)
  • 绘制到图像上(Canvas、SVG 或服务器端生成)
  • 添加干扰:噪点、线条、字符旋转

步骤 3. 显示 CAPTCHA 给用户

  • 将 CAPTCHA 图像放在表单旁边
  • 添加文本输入框
  • 添加刷新 CAPTCHA 按钮

重要:每次加载必须生成新代码。

步骤 4. 将数据发送到服务器

提交表单时发送:

  • 用户输入的文本
  • CAPTCHA ID 或会话 token

自定义 CAPTCHA 的代码只能存储在服务器,不可存储在客户端。

步骤 5. 在服务器验证 CAPTCHA

第三方供应商

  • 将 CAPTCHA token 发送到供应商服务器
  • 获取验证结果(成功 / 错误)

自定义 CAPTCHA

  • 将输入文本与存储值比较
  • 考虑 CAPTCHA 有效期(例如 1–2 分钟)

步骤 6. 做出决策

  • 如果 CAPTCHA 通过——执行操作(登录、注册、提交表单)
  • 如果不通过——显示错误并生成新 CAPTCHA

步骤 7. 增强保护(推荐)

即使是文字 CAPTCHA,也建议添加:

  • 限制尝试次数
  • 绑定 IP、会话或 Cookie
  • 一次性临时 token
  • 记录可疑行为
Background
可能的错误与调试
Bug Icon
图像 CAPTCHA 无法加载
(空图、404/500 或生成错误)——通常是生成逻辑不正确。确保服务器正确生成图像并返回,端点路径正确。
Bug Icon
验证码错误或为空
检查用户输入是否传到服务器并与存储值比较。
Bug Icon
输入正确但代码不匹配

确保:

  • 验证前 CAPTCHA 不被重新生成;
  • 每个会话或 token 独立存储代码;
  • 验证码未过期。
Bug Icon
验证码已过期
增加服务器端 CAPTCHA TTL 或在重试时生成新 CAPTCHA。
验证防护的可靠性
集成完成后,务必确认系统确实能够抵御自动化行为。
安全与优化建议
正确答案仅存储在 <b>服务器</b>(内存、Redis 或数据库),不要发送给客户端。
使用一次性 token 或 CAPTCHA ID。
限制每个 CAPTCHA 的尝试次数。
提交表单和验证码答案时始终使用 HTTPS。
记录 CAPTCHA 生成和验证错误(时间、IP、原因)——便于调试和攻击分析。
定期更新生成算法(字体、变形、噪点)。
结论

如果您获得了已安装 CAPTCHA 或其他保护系统的网站,但没有代码访问权限——无需担心!确定使用的技术非常容易。可以在隔离测试环境中使用 CapMonster Cloud 验证处理 token 和逻辑是否正确运行。

对于 图像 CAPTCHA ——只需识别系统、研究其行为,并确认保护正常工作即可。本文展示了如何识别图像 CAPTCHA(ComplexImage)及如何连接或重新配置,以确保保护安全可控。

Conclusion
实用链接
DocIconCapMonster Cloud 文档(文字 CAPTCHA 使用)DocIcon创建自定义 CAPTCHA 指南DocIconCapMonster Cloud 注册