在本文中,我们尽量回答了所有关键问题。要开始解决问题,第一步是确定当前使用的是哪种防护系统。为此,您可以查看常见验证码与反机器人防护系统列表,其中提供了可视化示例和关键特征,帮助您快速判断自己正在使用哪一种方案。
如果您发现自己的网站使用的是 ImageToText,下一步就是更深入地了解它的特性和具体工作方式。在本文中,您还可以查看 ImageToText 的接入说明,以便彻底弄清它在您的网站上是如何运行的。这样一来,您不仅能更好地理解当前的防护机制,还可以更合理地规划后续的维护和支持。
通过 CapMonster Cloud API 工作的一般流程:
type - ImageToTextTask
body - 验证码文件内容,base64 编码。确保值为单行发送,无换行;
capMonsterModule(可选) - 模块名称,例如 “yandex”。可通过 此处 查看所有可用模块和传递模块名称的替代方法;
您还可以设置其他可选参数:
recognizingThreshold - 验证码识别阈值,范围 0-100;
case - 是否区分大小写。可选值:true, false;
numeric - 1 - 如果验证码仅包含数字。可选值:0, 1;
math - false — 默认未设置;
true — 验证码要求执行数学操作(例如 2 + 6 返回 8)。
重要:对于 captcha_math 模块,不要使用 math: true。
https://api.capmonster.cloud/createTask{
"clientKey":"API_KEY",
"task": {
"type":"ImageToTextTask",
"body":"BASE64_BODY_HERE!"
}
}
{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}
{
"errorId":0,
"status":"ready",
"solution": {
"text":"answer"
}
}
// 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 生成
第三方供应商
自定义 CAPTCHA
步骤 3. 显示 CAPTCHA 给用户
重要:每次加载必须生成新代码。
步骤 4. 将数据发送到服务器
提交表单时发送:
自定义 CAPTCHA 的代码只能存储在服务器,不可存储在客户端。
步骤 5. 在服务器验证 CAPTCHA
第三方供应商
自定义 CAPTCHA
步骤 6. 做出决策
步骤 7. 增强保护(推荐)
即使是文字 CAPTCHA,也建议添加:
确保:
如果您获得了已安装 CAPTCHA 或其他保护系统的网站,但没有代码访问权限——无需担心!确定使用的技术非常容易。可以在隔离测试环境中使用 CapMonster Cloud 验证处理 token 和逻辑是否正确运行。
对于 图像 CAPTCHA ——只需识别系统、研究其行为,并确认保护正常工作即可。本文展示了如何识别图像 CAPTCHA(ComplexImage)及如何连接或重新配置,以确保保护安全可控。