MTCaptcha · 在线演示

MTCaptcha 演示

输入图中变形的字母,也可选用隐形模式。

Windows x64·本地运行,验证码不会离开你的电脑
  • 免费,无需注册
  • 真实提供商的小组件
  • 查看验证响应
每月可获取的 MTCaptcha token40,000
40.0k250.0k
别家按次收费,每 1,000 次约 $1.45$58.00
CapSkip Bronze,统一定价$35.00
$23.00留在你的口袋里按当前用量,每月如此

实时 MTCaptcha 小组件

将图片中显示的字符输入下方的输入框。MTCaptcha 一返回已验证的 token,就会立即完成验证。

识别耗时 0.0s
识别费用 使用 CapSkip 为 $0

如何识别 MTCaptcha

上方的方框是一个实时的 MTCaptcha 小组件。本页面展示两种方式来识别 MTCaptcha 并获取已验证的 v1 token:通过在你自己的代码中调用 CapSkip HTTP API,或将你的工具已经调用的验证码服务重新路由到 CapSkip。CapSkip 是一款无限量的 MTCaptcha 识别工具,在你的设备上本地运行,因此没有按次费用,也没有任何数据离开你的机器。

面向开发者

方式一:使用 CapSkip HTTP API 识别 MTCaptcha

在构建自动化、爬虫或机器人?只需一个请求,把本页面的 MTPublic site key 和 URL 发送给 CapSkip 应用,轮询结果,CapSkip 就会返回一个已验证的 MTCaptcha token,你可以像真实 token 一样提交它。该 API 使用标准的 in.php / res.php 端点,因此可以在 Python, Node.js, PHP, C# 或任何能发起 HTTP 调用的其他语言中使用。

网站密钥(Site key)
MTPublic-C8YHBQqYE
页面 URL
https://capskip.com/zh/captcha-demo/mtcaptcha/

开始之前

CapSkip 在本地识别。下载并运行 CapSkip 桌面应用 并让它在后台保持打开。你的代码通过 127.0.0.1:8080与它通信,因此没有云端调用,也没有按次费用。

1

将 MTCaptcha 发送到 CapSkip

提交本页面的 sitekey 和 pageurl 设置为 in.php 连同 method=mt_captcha。CapSkip 会立即返回一个任务 ID。

import time
import requests

API = "http://127.0.0.1:8080"   # the CapSkip app on your machine
KEY = "YOUR_API_KEY"

# 1. Submit the MTCaptcha shown on this page
task = requests.post(f"{API}/in.php", data={
    "key": KEY,
    "method": "mt_captcha",
    "sitekey": "MTPublic-C8YHBQqYE",
    "pageurl": "https://capskip.com/zh/captcha-demo/mtcaptcha/",
    "json": 1,
}).json()["request"]

# 2. Poll until the token is ready
while True:
    time.sleep(3)
    res = requests.get(f"{API}/res.php", params={
        "key": KEY, "action": "get", "id": task, "json": 1,
    }).json()
    if res["request"] != "CAPCHA_NOT_READY":
        break

token = res["request"]   # the v1(...) verified token
print(token)
const API = 'http://127.0.0.1:8080'; // the CapSkip app on your machine
const KEY = 'YOUR_API_KEY';
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));

(async () => {
  // 1. Submit the MTCaptcha shown on this page
  const submit = await fetch(`${API}/in.php`, {
    method: 'POST',
    body: new URLSearchParams({
      key: KEY,
      method: 'mt_captcha',
      sitekey: 'MTPublic-C8YHBQqYE',
      pageurl: 'https://capskip.com/zh/captcha-demo/mtcaptcha/',
      json: '1',
    }),
  }).then((r) => r.json());

  // 2. Poll until the token is ready
  let res;
  do {
    await sleep(3000);
    res = await fetch(`${API}/res.php?key=${KEY}&action=get&id=${submit.request}&json=1`)
      .then((r) => r.json());
  } while (res.request === 'CAPCHA_NOT_READY');

  const token = res.request; // the v1(...) verified token
  console.log(token);
})();
<?php
$api = 'http://127.0.0.1:8080'; // the CapSkip app on your machine
$key = 'YOUR_API_KEY';

// 1. Submit the MTCaptcha shown on this page
$ch = curl_init("$api/in.php");
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS     => http_build_query([
        'key'     => $key,
        'method'  => 'mt_captcha',
        'sitekey' => 'MTPublic-C8YHBQqYE',
        'pageurl' => 'https://capskip.com/zh/captcha-demo/mtcaptcha/',
        'json'    => 1,
    ]),
]);
$task = json_decode(curl_exec($ch), true)['request'];

// 2. Poll until the token is ready
do {
    sleep(3);
    $res = json_decode(file_get_contents(
        "$api/res.php?key=$key&action=get&id=$task&json=1"
    ), true);
} while ($res['request'] === 'CAPCHA_NOT_READY');

$token = $res['request']; // the v1(...) verified token
echo $token;
using System.Text.Json;

const string Api = "http://127.0.0.1:8080"; // the CapSkip app on your machine
const string Key = "YOUR_API_KEY";
var http = new HttpClient();

// 1. Submit the MTCaptcha shown on this page
var submit = await http.PostAsync($"{Api}/in.php", new FormUrlEncodedContent(new Dictionary<string, string>
{
    ["key"] = Key,
    ["method"] = "mt_captcha",
    ["sitekey"] = "MTPublic-C8YHBQqYE",
    ["pageurl"] = "https://capskip.com/zh/captcha-demo/mtcaptcha/",
    ["json"] = "1",
}));
string task = JsonDocument.Parse(await submit.Content.ReadAsStringAsync())
    .RootElement.GetProperty("request").GetString()!;

// 2. Poll until the token is ready
string token;
do
{
    await Task.Delay(3000);
    var res = JsonDocument.Parse(await http.GetStringAsync(
        $"{Api}/res.php?key={Key}&action=get&id={task}&json=1"));
    token = res.RootElement.GetProperty("request").GetString()!;
} while (token == "CAPCHA_NOT_READY");

Console.WriteLine(token); // the v1(...) verified token

你会得到一个已验证的 token,它以 v1(开头,对该 site key 和本页面有效,可直接提交。它只能使用一次,且只在几分钟内有效,因此请在发送表单前一刻再请求。

2

使用 token

将 token 放入小组件隐藏的 mtcaptcha-verifiedtoken 字段并提交表单。随后你的服务器会通过 MTCaptcha 的 checktoken 调用并使用其私钥对它进行验证。请注意,本演示通过小组件自身的回调进行验证,因此它检查的是小组件生成的 token,而不是你放入字段中的 token。

// 1. Drop the solved token into the hidden field the widget submits
document.querySelector('[name="mtcaptcha-verifiedtoken"]').value = token;

// 2. ...then submit your form.
高级

隐形 MTCaptcha 与页面 action

在隐形(低干扰)模式下,大多数访问者根本看不到图片,MTCaptcha 只在访问看起来可疑时才显示图片。同一个请求同样适用,如果要求作答图片,CapSkip 也会作答。如果页面的 mtcaptchaConfig 设置了 action,请随任务一起发送,因为 token 与它绑定。

POST http://127.0.0.1:8080/in.php
     key=YOUR_API_KEY
     method=mt_captcha
     sitekey=MTPublic-SITEKEY_FROM_THE_PAGE
     pageurl=https://the-protected-site.com/login
     action=login
     json=1

GET  http://127.0.0.1:8080/res.php?key=YOUR_API_KEY&action=get&id=2122988149&json=1
     {"status":1,"request":"v1(2f7e3c1a,b7c6…)"}

该 API 还接受 proxy 和 proxytype,可将稳定的请求量分散到多个地址上。JSON 客户端也可以通过 createTask 发送同一任务,类型为 MTCaptchaTask 或 MtCaptchaTaskProxyless,并附带 isInvisible (用于低干扰小组件)。

完整的请求参数、响应字段和错误代码列表见 CapSkip API 文档.

无需改动代码

方式二:将你现有的识别服务代码发送到 CapSkip

遇到 MTCaptcha 时,已经在通过按次付费的验证码服务(例如 2Captcha, CapMonster Cloud 或 CapSolver)识别验证码?你无需重写一行代码。CapSkip 应用包含一个 服务模拟器 ,它在本地模拟这些服务自己的 API:选择你使用的服务,点击 添加到 hosts 文件,你的机器人、爬虫或现成工具已经发送给它的每个请求,都会由 CapSkip 在你自己的机器上响应,采用统一价格而非按次账单。

1

选择你的服务

打开 CapSkip 应用,选择你的代码已经在对接的服务:2Captcha、RuCaptcha、SolveCaptcha、CapMonster Cloud、CapSolver 或 DeathByCaptcha。

2

添加到 hosts 文件

在应用中一键将该服务的域名指向 CapSkip,于是你的工具发出的调用会在你自己的机器上得到响应,而不是发往付费 API。

3

原样运行你的工具

相同的 API key、相同的请求、相同的轮询循环。CapSkip 以该服务自身的格式回复,你的代码会得到一个已验证的 MTCaptcha token。

切换后,下面的内容不会有任何变化。这与你的代码今天发出的调用完全相同,只不过现在 MTCaptcha 在本地识别,并且一个已验证的 token 会从 CapSkip 返回:

POST https://2captcha.com/in.php
     key=YOUR_EXISTING_API_KEY
     method=mt_captcha
     sitekey=MTPublic-C8YHBQqYE
     pageurl=https://capskip.com/zh/captcha-demo/mtcaptcha/

GET  https://2captcha.com/res.php?key=YOUR_EXISTING_API_KEY&action=get&id=2122988149
     OK|v1(2f7e3c1a,b7c6…)  the verified token, solved by CapSkip

客户端库同样如此: createTask / getTaskResult 组合搭配 MTCaptchaTask、DeathByCaptcha 类型 18,或任何基于这些服务构建的封装,在模拟器开启后都能继续工作。完整的请求和响应参考见 CapSkip API 文档.

关于本 MTCaptcha 演示

本页是一个实时的 MTCaptcha 演示 ,在这里你可以测试 MTCaptcha 的工作原理,并实时观看它被识别的过程。MTCaptcha 是一款注重隐私的验证码,它会显示一行简短的变形字符,部分被一个彩色椭圆遮挡,并配有一个用于输入的方框,以及音频和换一张图片的按钮。希望减少干扰的网站会开启它的隐形模式:大多数访问者可以直接通过,只有它有所怀疑的访问者才会看到图片。用它来探索 MTCaptcha token 的生成、 mtcaptcha-verifiedtoken 值,以及网站用来保护表单、登录和注册免受垃圾信息、滥用和机器人侵害的 checktoken 验证流程。

开发者、测试人员和自动化工程师可以使用这个 MTCaptcha 测试页面来检查集成、验证配置,并对 CapSkip 识别 MTCaptcha 的速度进行基准测试。无论你需要识别一次 MTCaptcha 还是自动化数千次识别,CapSkip 都有两种工作方式:可从任何语言调用的普通 HTTP API,以及对你今天可能按次付费的验证码服务的即插即用模拟,两者都以统一价格无限量识别。两者都由同一个桌面 AI 验证码识别工具驱动,安装一次即可在你自己的机器上运行,因此没有任何内容在远程服务器排队,也没有任何按次计费。参见 MTCaptcha 识别工具 页面,了解完整介绍。

我如何识别 MTCaptcha?
运行 CapSkip 桌面应用,将 MTPublic sitekey 和页面 URL 以 method=mt_captcha 发送到它的 API,CapSkip 就会返回一个以 v1( 开头的已验证 token。将它放入 mtcaptcha-verifiedtoken 字段,然后提交表单。
我可以保留现有的 2Captcha 或 CapSolver 代码吗?
可以。CapSkip 应用模拟以下服务的 MTCaptcha 调用: 2Captcha, RuCaptcha, SolveCaptcha, CapMonster Cloud, CapSolver 和 DeathByCaptcha。在应用中选择你的服务,点击“添加到 hosts 文件”,你的代码已经发送的 MTCaptcha 请求就会由 CapSkip 在本地识别,无需改动代码,也无按次费用。
在哪里找到 MTCaptcha 的 sitekey?
在页面源代码中查找 mtcaptchaConfig 对象:其中的 sitekey 值以 MTPublic- 开头。如果小组件已经显示在屏幕上,同一个 sitekey 也会出现在其 service.mtcaptcha.com 上的 iframe 地址中。
CapSkip 能处理隐形 MTCaptcha 吗?
可以。隐形小组件与可见的文字挑战使用同一个请求,返回的也是同一种 token。如果 MTCaptcha 最终仍判定需要显示图片,CapSkip 会作答。
MTCaptcha token 的有效期有多长?
只有几分钟,而且只能用一次。请在提交表单前一刻再请求,拿到后立即使用。在队列里放过或已经用过的 token 会被 checktoken 拒绝。
CapSkip 是免费的 MTCaptcha 识别工具吗?
免费试用可让你完整使用三天并识别 500 次。付费授权以统一价格解锁无限量识别,无按验证码费用。
价格登录