MTCaptcha
MTCaptcha 是 MTCaptcha 的勾选框 / 图像题(SOC 2 + GDPR 合规路线)。一个组件框,多数配置下是低摩擦交互。厂商主打 “privacy-compliant”,宣称 SOC 2 Type 2 attested、GDPR 与 CCPA ready。
接口规格
| 项目 | 值 |
|---|---|
| type | mtcaptcha |
| 必填参数 | website_urlwebsite_key |
| 可选参数 | 无 |
| 返回 | 一个 token 字符串(solution.token) |
| 怎么用这个解 | 填回目标站表单的 `mtcaptcha-verifiedtoken` |
| 价格 | $2.22 / 1K 次 —— 按成功计费,没解出来退款 |
| 厂商文档 | MTCaptcha 官方文档 |
参数去页面哪里取
下面全部是可以直接照做的定位方法 —— DOM 属性名、JS 全局变量名、script 上的 query 参数。
必填 website_url + website_key。
⚠⚠ 这条和别家最不一样的地方:sitekey 不在 `data-*` 属性里
MTCaptcha 用一个全局 JS 配置对象传 sitekey:
<script>
var mtcaptchaConfig = { "sitekey": "YOUR_SITEKEY" };
</script>
<script src="https://service.mtcaptcha.com/mtcv1/client/mtcaptcha.min.js" async defer></script>
<div class="mtcaptcha"></div>所以照搬找 `data-sitekey` 的习惯会一无所获。正确取法是在控制台读那个全局对象:
mtcaptchaConfig.sitekey(页面必须已经执行到配置那一段;官方要求配置写在脚本标签之前,以便脚本初始化时读得到。)
拿不到全局对象时,退回搜 HTML 里的 mtcaptchaConfig 字面量。
容器
挂载点用类名不是 id:<div class="mtcaptcha"></div>。页面上有这个 class 就是装了 MTCaptcha。
脚本域
service.mtcaptcha.com;另有备用域 service2.mtcaptcha.com(站点做 CSP 放行或需要固定出口 IP 时会用它)。看到 service2 不用慌,是同一家的官方备用域。
回填
隐藏 input 的 name 是 `mtcaptcha-verifiedtoken`(对应 reCAPTCHA 的 g-recaptcha-response)。后端只读这个字段。
调用示例
一个端点解全部验证码类型 —— 换一种验证码只改 type 这一个字段。
curl -X POST https://api.everyinfra.com/api/v1/captcha \ -H "Authorization: Bearer omg_你的KEY" \ -H "Content-Type: application/json" \ -d '{"type":"mtcaptcha","website_url":"<website_url>","website_key":"<website_key>"}'
{ "solution": { "token": "…" }, "billing": { "charged": true, "credits": 160 }}
怎么确认目标站用的就是它
客户端拿到一个 verified token,站点后端拿它去 `checktoken` 接口换判定。token **短期有效且一次性**——重复校验同一个 token 会触发 duplicate-token。
容易搞混的
名字里带 CAPTCHA 的一大堆,但 MTCaptcha 的取参方式是独一份:只有它把 sitekey 放在全局 JS 配置对象里。看到 mtcaptchaConfig 就能确定。
常见部署场景
- 受合规审计约束的 B2B SaaS(SOC 2 是它最常被选中的理由)
- 从 reCAPTCHA 或 Turnstile 迁走的站点——官方对这两条迁移路径都写了专门的指南
- 金融、HR、企业服务类表单
已知的坑
sitekey 在 `mtcaptchaConfig` 全局对象里,不是 `data-sitekey` —— 这是本条最容易卡住的一步,按找 reCAPTCHA 的经验去翻 DOM 属性会找不到。
token 一次性:官方明写重复调用 checktoken 会报 duplicate-token。别把一个 token 提交两次。
常见错误码 invalid-token / token-expired 的实际含义多半是「提交了旧 token,而组件没刷新」。
站点后台的 SiteKey 与 PrivateKey 必须同属一个站点,否则报 privatekey-mismatch-token——这个错发生在目标站那一侧,不是我们没解出来。
常见问题
MTCaptcha 要传哪些参数?
必填 website_url、website_key,没有可选参数。请求里 type 传 mtcaptcha。
解出来的东西怎么用?
返回一个 token 字符串,取 solution.token。填回目标站表单的 mtcaptcha-verifiedtoken
mtcaptcha-verifiedtoken 要去页面的哪里找?
重点找 mtcaptcha-verifiedtoken、service2.mtcaptcha.com、service.mtcaptcha.com。本页「参数去页面哪里取」一节写了全部位置与取法,含可直接粘进控制台的一行命令。
怎么确认目标站用的就是 MTCaptcha?
名字里带 CAPTCHA 的一大堆,但 MTCaptcha 的取参方式是独一份:只有它把 sitekey 放在全局 JS 配置对象里。看到 mtcaptchaConfig 就能确定。
有什么容易踩的坑?
sitekey 在 `mtcaptchaConfig` 全局对象里,不是 `data-sitekey` —— 这是本条最容易卡住的一步,按找 reCAPTCHA 的经验去翻 DOM 属性会找不到。
多少钱一次,失败扣不扣?
$2.22 / 1K 次。按成功计费 —— 没解出来一律退款,所以失败不花钱。账单按次记,标价按每千次是为了让量级读得出来。