K 文档 GitHub
KMENTA / 使用 / 人机验证

人机验证

后台「设置 → 人机验证」开启后,评论发布前必须先通过人机验证,否则提交会被拦截(接口返回「请先完成人机验证」)。服务端校验由 kmenta 完成,你只需要在前端页面提供一个东西:对应服务商的站点密钥(sitekey / AppKey)——验证脚本的加载、验证组件的渲染、评论提交时令牌的携带,都由评论区组件自动完成。

前端需要做的

在引入 comment-widget.jsscript 标签上加 data-captcha-sitekey="你的站点密钥"(使用 kcomment.init() 时,在参数里传 captcha: { sitekey: '…' } 也可以):

<div id="kcomment"></div>
<script
  src="https://api.example.com/widget/comment-widget.js"
  data-captcha-sitekey="你的站点密钥"
></script>

Cloudflare Turnstile

Turnstile 控制台创建站点,会得到一对密钥:Site Key(前端)与 Secret Key(服务端)。后台「人机验证」填入 Secret Key,前端把 Site Key 填到 data-captcha-sitekey 上即可。

hCaptcha

hCaptcha 控制台注册一个站点,会得到 Site KeySecret Key。后台填入 Secret Key,前端把 Site Key 填到 data-captcha-sitekey 上即可。

阿里云验证码

在阿里云「验证码 2.0」控制台创建验证码配置,会得到 AppKey。服务端校验与前端渲染使用同一个 AppKey:后台「人机验证」填入 AppKey,前端把同一个 AppKey 填到 data-captcha-sitekey 上即可(具体字段以阿里云控制台说明为准)。

验证是否生效

  • 开启后刷新页面,评论区输入框下方应出现验证组件。
  • 不做验证直接点「发布」,会被提示「请先完成人机验证」。
  • 验证令牌一次性使用:一条评论发布成功后,下一条需要重新验证。
  • 没填 data-captcha-sitekey 时,组件会提示「前端未配置站点密钥」,属正常现象——补上即可。
提示:Turnstile / hCaptcha 有两把钥匙:后台「服务端校验密钥」填 Secret Key,前端页面 data-captcha-sitekeySite Key,别填反了。
评论区