一、配置前环境检查清单
配置前必须确认运行环境已就绪,避免配置完成后因环境缺陷导致识别失效。逐项核对以下清单:
| 检查项 | 要求 | 验证命令 |
|---|---|---|
| Nginx 版本 | ≥ 1.18,含 Lua 模块 | nginx -V 2>&1 | grep lua |
| 规则库目录 | 可写,权限 755 | ls -ld /etc/cloak/rules |
| SSL 证书 | 有效且未过期 | openssl s_client -connect |
| IP 信誉库 | 已初始化,> 10 万条 | wc -l ip_reputation.db |
| 日志目录 | 可写,磁盘 > 5G | df -h /var/log/cloak |
nginx -V 输出中没有 lua 字样,所有识别脚本将无法执行,系统会默认放行全部流量——等同于斗篷失效。二、识别引擎核心参数配置
识别引擎是斗篷系统的决策中枢,其核心参数直接决定识别准确率与响应延迟。以下参数需要在引擎配置文件中设置。
1. 识别延迟阈值
单次识别的耗时上限。超过此阈值则跳过剩余检测维度,直接输出当前结果,避免拖慢真实用户。
| 参数 | 默认值 | 推荐范围 | 说明 |
|---|---|---|---|
identify_timeout |
20ms | 15-30ms | 超时后立即返回当前判定 |
identify_dimensions |
5 | 3-7 | IP/UA/Referer/指纹/行为 |
confidence_threshold |
0.85 | 0.80-0.95 | 低于此值走兜底策略 |
2. 五维检测权重
每个检测维度对最终判定的贡献权重。权重之和应为 1.0,可根据实际投放平台调整:
# identify.conf 核心配置
[weights]
ip_reputation = 0.35 # IP信誉库权重最高
user_agent = 0.25 # UA特征匹配
referer_check = 0.15 # 来源Referer校验
fingerprint = 0.15 # 浏览器指纹
behavior = 0.10 # 行为特征(兜底维度)
[thresholds]
identify_timeout = 20 # 单次识别超时(ms)
confidence_min = 0.85 # 最低置信度
spider_score = 0.70 # 蜘蛛判定分数线
3. 置信度计算逻辑
各维度命中后累加权重得分,最终得分 ≥ spider_score 判定为蜘蛛,< confidence_min 走兜底。中间区间判定为真实用户。
三、规则库配置实战
规则库定义了"什么特征判为蜘蛛、什么判为真实用户"。规则库分白、黑、灰三层,配置顺序与优先级严格对应。
1. 白名单配置
白名单为可信流量,优先级最高,命中即放行。用于确保搜索引擎常规抓取不被误判。
{
"whitelist_ua": [
"Baiduspider+(+http://your-site.com/spider.htm)",
"Googlebot/2.1 (+http://your-site.com/bot.html)",
"bingbot/2.0 (+http://your-site.com/bingbot.htm)"
],
"whitelist_ip_range": [
"220.181.0.0/16",
"66.249.64.0/19"
]
}
2. 黑名单配置
黑名单为审核蜘蛛,命中即导向 A 页。需按平台分别维护,不同广告平台的审核蜘蛛特征不同。
{
"blacklist_ua": [
"Googlebot-Image",
"Baiduspider-render",
"AdsBot-Google",
"mediapartners-google",
"facebookexternalhit",
"Facebot"
],
"blacklist_ip_range": [
"66.249.64.0/19",
"157.55.39.0/24",
"31.13.24.0/21"
],
"blacklist_fingerprint": [
"headless_chrome",
"phantomjs",
"selenium_webdriver"
]
}
3. 灰名单与二次验证
灰名单是可疑流量,无法一次性判定。需配置二次验证机制:要求该类访客执行 JS 挑战或行为检测,通过则放行,失败则判蜘蛛。
{
"graylist_rules": [
{
"condition": "datacenter_ip && unknown_ua",
"action": "js_challenge",
"timeout": 3000,
"fail_action": "a_page"
},
{
"condition": "no_referer && headless_suspect",
"action": "behavior_check",
"min_interactions": 2,
"fail_action": "a_page"
}
]
}
四、跳转逻辑与兜底策略配置
跳转逻辑根据识别结果将流量导向 A 页或 B 页,兜底策略决定置信度不足时的默认行为。
1. 跳转配置
# redirect.conf
[routes]
spider_page = "/a-page.html" # 审核蜘蛛看到的合规页
real_page = "/b-page.html" # 真实用户看到的落地页
fallback_page = "/a-page.html" # 兜底默认走 A 页
[redirect_type]
mode = "proxy" # 代理而非 302,避免跳转链被追踪
pass_headers = false # 不传递内部标识头
2. 兜底策略三原则
- 默认走 A 页:置信度不足时默认放行审核页,宁可放过部分真实用户,不可放过审核蜘蛛。
- 异常熔断:识别服务自身故障时,全部流量走 A 页,保证审核蜘蛛永远看不到 B 页。
- 限流降级:流量超载时启用简化识别(仅 IP+UA 两维),牺牲精度保响应速度。
3. 熔断配置
# circuit_breaker.conf
[fuse]
enabled = true
error_threshold = 100 # 10秒内错误超100次触发熔断
recovery_time = 60 # 60秒后尝试恢复
fallback_action = "all_a_page" # 熔断期间全部走 A 页
五、SSL 与安全配置
SSL 是硬性要求——无 SSL 的页面会被浏览器标记"不安全",审核蜘蛛同样会降权。安全配置还包括防盗链、防探测。
1. SSL 配置要点
# nginx SSL 配置
ssl_certificate /etc/letsencrypt/live/omnimold.xin/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/omnimold.xin/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000" always;
2. 防探测配置
审核蜘蛛会尝试直接访问 B 页 URL 探测落地内容。必须配置 B 页的访问保护:仅允许通过识别引擎的请求到达,直接访问返回 A 页或 404。
# 防止直接访问 B 页
location /b-page.html {
access_by_lua_block {
local identify = require "cloak.identify"
local result = identify.check(ngx.var.remote_addr,
ngx.var.http_user_agent)
if not result.is_real_user then
ngx.redirect("/a-page.html")
end
}
proxy_pass http://backend;
}
六、上线后调优配置
配置完成上线后,需要根据实际流量数据持续调优。调优的核心是复盘误判日志与漏判日志。
1. 监控指标配置
| 监控指标 | 告警阈值 | 说明 |
|---|---|---|
| 识别延迟 P99 | > 50ms | 真实用户感知卡顿 |
| A 页流量占比 | > 15% | 审核蜘蛛密集来访信号 |
| 熔断次数 | > 0 | 识别服务异常 |
| 误判率 | > 5% | 规则库需迭代 |
2. 规则库迭代节奏
- 每日:IP 信誉库自动拉取更新,热加载到识别引擎。
- 每周:复盘误判与漏判日志,新增蜘蛛特征入黑名单,误判真实特征移入白名单。
- 每月:全量审计灰名单规则,淘汰低效二次验证,优化通过率。
按以上配置完成识别引擎、规则库、跳转逻辑、SSL安全与调优监控后,一套斗篷系统即可在 95% 以上识别准确率下稳定运行。配置过程中如遇规则库维护成本过高或团队缺乏持续运维能力,也可考虑成熟的商业化方案——ABcloakPro 斗篷系统已将上述全部配置封装为可视化后台,内置每日自动更新的 IP 信誉库与多平台审核蜘蛛特征,免去手动配置与持续调优的负担,适合快速验证投放策略。