Why验证码
Why验证码
验证码保护 · 识别双引擎 API
登录 / 注册

给别人的网站一个真验证码
给开发者的程序一把识别引擎

一套平台,两套 API:保护接口 负责出图 + 校验,帮你的站点挡住批量注册与脚本刷接口;识别接口 负责把图片里的字符读出来,按次计费、即调即用。

免费注册租户 → 看价格
保护接口(防守)

一次出图返回 token + PNG;校验一次性、限试错次数、单 IP 限频,挡住注册机与接口刷子。

识别接口(进攻)

提交图片 base64,返回识别文本 + 置信度;支持 char4 / char5 / math 与通用数字/字母模式。

一站长 + 多租户

每个租户自动分配 6 位 UID,密钥带 UID 前缀,两套 key 分开计费,数据严格按租户隔离。

点数和套餐

识别按次扣余额(默认 1 分/次),VIP 包月送每日额度;在线充值走独立收款平台,到账自动加额度。

实时用量

按天、按类型统计调用次数与花费;站长后台能看全站每一笔用量和订单。

签名与防重放

HMAC-SHA256 签名 + 时间窗 + nonce 去重;重复请求直接返回上一次结果,天然幂等。

套餐价格

加载中…

三行代码接入

签名原文 app_key|ts|nonce,sign = HMAC-SHA256(secret, 原文);下面是最小可用示例:

import time, hmac, hashlib, requests

APP_KEY = "你的APPKEY"
SECRET  = "你的SECRET"
BASE    = "http://127.0.0.1:9002"

def 签名(ts, nonce):
    return hmac.new(SECRET.encode(), (APP_KEY + "|" + ts + "|" + nonce).encode(), hashlib.sha256).hexdigest()

ts, nonce = str(int(time.time())), "n1"
r = requests.post(BASE + "/api/v1/captcha/issue", json={
    "app_key": APP_KEY, "ts": ts, "nonce": nonce, "sign": 签名(ts, nonce), "type": "char4"
}).json()
print(r["data"]["token"], r["data"]["image_data_url"][:60] + "...")
Why验证码
识别接口仅用于自测自家验证码 / 授权场景;本平台不提供「指定第三方站点自动绕过」的服务。