MTCaptcha 验证码识别工具:绕过 MTCaptcha,获取已验证的 token
发送 MTPublic sitekey 和页面地址,CapSkip 就会交回一个可直接用于表单的已验证 MTCaptcha token。文字挑战和隐形小组件都在你自己运行的电脑或 VPS 上完成识别,通常约 3 秒,也没有计费表在统计 token 数量。
- 文字图片与隐形模式
- v1 token,可直接填入表单
- 统一月费套餐
MTCaptcha 用一行扭曲的短字母来保护登录、注册和结账表单,或者采用隐形验证,只有在访问看起来可疑时才弹出图片。CapSkip 是一款 MTCaptcha 识别工具,为你的脚本扫清这道关卡:它返回小组件本应写入表单的已验证 token,你的自动化流程就能像真人一样提交页面。整个过程都在你自己的 Windows 机器上完成,无论是台式电脑、VPS 还是独立服务器。
一个任务所需的东西很少:以 MTPublic- 开头的 sitekey、包含小组件的页面地址,以及页面设置了的 action 名称。你完全不需要亲自打开小组件。CapSkip 会自行请求并解答挑战,然后返回一个以 v1( 开头的 token,可直接填入 mtcaptcha-verifiedtoken 字段。
按次计费的服务每 1,000 个 MTCaptcha token 收费约 $1.45,而 token 只能用一次,所以你提交的每个表单都要再消耗一个。使用 CapSkip,你只需为每台运行它的电脑支付一份月费,35 美元起,token 数量从不计入账单。基于 in.php 和 res.php 编写的脚本、类型为 MTCaptchaTask 的 createTask 任务,以及 type 18 的 DeathByCaptcha 上传,只要指向 CapSkip 就能继续正常工作。
每个 token 请立即使用。 MTCaptcha token 只能使用一次,而且仅在几分钟内有效,所以请在提交表单前一刻再请求,切勿提前囤积。 查看 MTCaptcha API 参考文档
MTCaptcha 识别工具支持哪些内容
可见与隐形小组件
带文字图片的标准小组件,以及在怀疑访客之前一直隐藏的低干扰模式,返回的都是同一种 token,因此一套集成就能覆盖两种配置。
表单认可的 token
返回的是 MTCaptcha 签发的已验证 token,以 v1( 开头。把它放进 mtcaptcha-verifiedtoken 字段,或页面读取它的任何位置,然后立即提交表单。
每个 token 约 3 秒
一个典型的 MTCaptcha 任务约 3 秒即可完成。你的任务不会在共享队列里排队,速度只取决于你的机器,以及你允许同时运行的 MTCaptcha 任务数量。
错误的 sitekey 立即标出
MTCaptcha 不认识的 sitekey,或不允许在你指定页面上使用的 sitekey,会返回专门的错误,而不是无休止地重试,因此配置里的笔误在第一个任务就能看出来。
支持三种请求格式
in.php 上的 method=mt_captcha、使用 MTCaptchaTask 或 MtCaptchaTaskProxyless 的 createTask,以及 DeathByCaptcha 的 type 18 都可以使用,每个响应都按调用方的库所期望的格式返回。
每次表单提交都包含在内
token 只能用一次,所以繁忙的注册或登录流程消耗得很快。无论你提交多少表单,每一个都包含在月度套餐内。
将 MTCaptcha 任务发送到 CapSkip 的三种方式
import time
import requests
API = "http://127.0.0.1:8080"
KEY = "YOUR_API_KEY"
# The sitekey comes from the page's mtcaptchaConfig object.
job = requests.post(API + "/in.php", data={
"key": KEY,
"method": "mt_captcha",
"sitekey": "MTPublic-KzqLY1cKH",
"pageurl": "https://www.example.com/login",
"json": 1,
}).json()
while True:
time.sleep(3)
res = requests.get(API + "/res.php", params={
"key": KEY, "action": "get", "id": job["request"], "json": 1,
}).json()
if res["request"] != "CAPCHA_NOT_READY":
break
if res["status"] != 1:
raise RuntimeError(res["request"])
# The token is single-use and short-lived: submit the form right away.
requests.post("https://www.example.com/login", data={
"username": "alice",
"password": "YOUR_PASSWORD",
"mtcaptcha-verifiedtoken": res["request"],
})MTCaptcha 只需普通 HTTP 即可:把 sitekey 和页面地址提交到 in.php,轮询 res.php 获取 token,然后在 mtcaptcha-verifiedtoken 字段中随表单一起发送。
旧版 in.php 和 res.php
提交 method=mt_captcha 以及 sitekey 和页面 URL,页面设置了 action 的话一并加上,然后轮询 res.php,在 OK| 之后读取 v1 token。
使用 MTCaptchaTask 的 createTask
JSON 客户端发送 MTCaptchaTask,任务不带代理时发送 MtCaptchaTaskProxyless,低干扰小组件加上 isInvisible,然后从 getTaskResult 返回的 solution 中读取 token。
DeathByCaptcha 类型 18
为 DeathByCaptcha 编写的工具继续带着 mtcaptcha_params 上传 type 18,结果会把 token 放在 text 字段中,而这正是这些工具本来就读取的字段。
三步拿到你的第一个 MTCaptcha token
-
在你的脚本旁设置好 CapSkip
把它安装在提交表单的那台 Windows 机器上。MTCaptcha 任务不涉及浏览器,所以普通硬件就足以应付。 下载 CapSkip
-
开始试用或选择套餐
免费试用让你在付费前先用自己的目标测试 MTCaptcha。准备好后,再选择要授权的机器数量。 查看套餐
-
发送 sitekey,提交表单
提交 MTPublic sitekey 和页面 URL,等待约 3 秒,提交时把返回的 token 放进 mtcaptcha-verifiedtoken。 打开 MTCaptcha 文档
统一定价的 MTCaptcha 识别与按 token 付费对比
两种方式最终都会在你的表单里得到一个 v1 token。区别在于每个 token 的成本,以及谁会知道你在自动化哪些网站。
| 功能 | CapSkip | 按 token 计费的服务 |
|---|---|---|
| 每月账单 | 每台机器一个价格,35 美元起,token 无限量 | 每 1,000 个 MTCaptcha token 约 $1.45 |
| 小组件模式 | 文字挑战和隐形小组件通过同一个请求处理 | 并非每个服务都支持隐形模式 |
| 典型识别时间 | 约 3 秒,你的任务前面没有队列 | 取决于服务商当时的负载 |
| 每个表单一个一次性 token | 表单需要多少新 token 都可以,价格不变 | 你提交的每个表单都要再收一次费 |
| 您现有的客户端 | 你的 in.php、createTask 或 type 18 调用,原样不变 | 通常绑定该厂商自己的 SDK 和任务名称 |
| 谁能看到你的目标网站 | 没有人:sitekey 和页面都留在你的机器上 | 第三方会记录你发送的每个 sitekey 和页面 |
想先试用一下?
开始 3 天免费试用,在你自己的目标上识别 500 个任意类型的验证码。
MTCaptcha 的工作原理,以及如何通过 API 绕过它
网站通过加载一个小脚本并为其提供以 MTPublic- 开头的 sitekey 来添加 MTCaptcha。标准形式下,它会显示一张由四到七个扭曲字符组成的图片,部分字符被一个彩色椭圆遮挡,图片下方是输入框,以及用于音频和换一张图片的按钮。答案不区分大小写。想要减少阻碍的网站会开启隐形模式,让大多数访客直接通过,只把图片展示给它怀疑的访客。
无论网站使用哪种模式,表单需要的结果都一样:一个以 v1( 开头的已验证 token,由小组件放进名为 mtcaptcha-verifiedtoken 的隐藏字段。表单到达后,网站服务器会向 MTCaptcha 询问该 token 是否真实。因此,MTCaptcha 绕过要产出的是 token,而不是某张图片的答案,而这正是 CapSkip 返回的东西。
token 的两个特性决定了任何自动化的做法。它只能用一次,所以每次提交表单都需要一个新的;它的寿命很短,最多几分钟有效,所以请在提交表单前一刻再请求,而不是提前囤积。它还与 sitekey 以及该 sitekey 注册的域名绑定,所以你发送的页面地址必须是真实的。
少量测试可以直接用你自己的网络连接。大批量识别 MTCaptcha 时,请把任务分散到一组代理上,可以在应用里设置代理列表,也可以每个任务附带一个代理,因为每次识别都会从 MTCaptcha 获取新的挑战,而来自单一地址的持续请求流,恰恰是限速机制要拖慢的对象。
相关指南: MTCaptcha API 参考文档 · Image CAPTCHA solver · 网络爬虫验证码识别
MTCaptcha 任务会返回什么?
在哪里找到 MTCaptcha 的 sitekey?
CapSkip 能处理隐形 MTCaptcha 吗?
MTCaptcha token 的有效期有多长?
识别 MTCaptcha 需要代理吗?
MTCaptcha 识别有多快?
如果 sitekey 或页面地址错了怎么办?
我现有的 MTCaptcha 代码能配合 CapSkip 使用吗?
识别更多 MTCaptcha 会更贵吗?
绕过 MTCaptcha,无需按 token 付费
把你的表单自动化指向 CapSkip,页面一要 token,它就去获取 MTCaptcha token。可见的图片、隐形的验证以及每一个重复的 token,都包含在同一份月费里。
