外观
人机验证
人机验证用于区分真实用户与自动化程序,是 CC 防护的重要处置手段。GinWAF 提供 6 种验证方式,并支持自定义验证页面模板。
验证方式
| 方式 | 说明 | 用户体验 |
|---|---|---|
| 无感验证 | 后台静默完成 JS 挑战,用户无感知 | 最流畅 |
| 5 秒防护 | 页面停留 5 秒后自动放行 | 较流畅,可有效拦截脚本 |
| 点击验证 | 点击指定区域完成验证 | 通用 |
| 滑动验证 | 拖动滑块完成验证 | 通用 |
| 图片验证码 | 输入图形验证码 | 通用 |
| 旋转图片 | 旋转图片至正确角度 | 强验证 |
选择建议
- 对体验要求高的站点优先使用无感验证
- 遭遇自动化刷量时使用5 秒防护或滑动验证
- 遭遇高强度攻击时使用旋转图片等强验证
验证流程
- 请求命中 CC 规则的人机验证动作
- 引擎下发验证挑战页,并标记该 IP 处于待验证状态
- 用户完成验证后,引擎签发验证凭证并写入缓存
- 在有效期内,该 IP 的后续请求直接放行,无需重复验证
引擎侧的处理细节:
- 验证页加载后,前端调用
/guard/challenge接口,系统在 Redis 与本地缓存中写入挑战标记,有效期 5 分钟。 - 用户完成交互后,前端调用
/guard/token接口提交校验:通过则生成 Token,写入 Redis 与 Nginx 共享缓存并设置 Cookie;不通过则累加失败计数,达到阈值(默认 5 次)后自动封禁该 IP。 - 验证成功后页面自动跳转回原访问地址。
访客侧实际看到的验证页(以滑动验证为例):

同一 IP 短时间内的验证请求会被计数,超过失败阈值将被拉黑。
自定义验证模板
进入「人机验证」页面,可为每种验证方式配置自定义的 HTML 模板,实现与站点风格一致的验证界面。
系统内置 6 个验证页面模板,统一存放于 /opt/ginwaf/waf/guard/ 目录:
| 验证方式 | 模板文件 |
|---|---|
| 无感验证 | no_sense.html |
| 5 秒防护 | 5s.html |
| 点击验证 | click.html |
| 滑动验证 | slide.html |
| 图片验证码 | captcha.html |
| 旋转图片 | rotate.html |
操作步骤:
- 在控制台左侧菜单点击「人机验证」,进入「人机验证配置」页面。
- 页面按验证方式纵向排列各模板编辑区,依次为滑动验证、验证码验证、点击验证、5 秒验证、旋转图片验证、无感验证。
- 在目标编辑区中修改 HTML 内容,调整页面结构、样式与文案;页面底部显示最近更新时间。
- 点击「保存配置」,系统自动将内容同步到
/opt/ginwaf/waf/guard/下对应的 HTML 文件,实时生效,无需重启服务。

模板变量
自定义模板时请保留引擎所需的验证逻辑与变量占位符(尤其是 /guard/challenge 与 /guard/token 的调用逻辑),仅调整样式与文案,否则验证可能无法通过。
配置入口
- 验证模板:人机验证 页面
- 登录与取码防刷:防刷配置 页面,控制图形验证码、登录人机验证与邮件防刷,详见 防刷配置
- 触发条件与验证方式:站点编辑页「CC 防护配置」标签页中的默认防护、自动切换与自定义规则,详见 CC 防护
- 全局规则组:CC 规则组 页面中的过滤器配置
