
很多做 Cloak 配置的人一上来就喜欢拍一个“看起来差不多”的阈值,比如把某个风险评分卡在 60 分,跑几天数据看看。转化没掉,就觉得误伤没事;异常流量还能进来,就把阈值往上抬一抬。这个做法有个毛病,它把两个本来该分开看的指标绑在同一个旋钮上了,而且从头到尾没回答一个关键问题:你现在看到转化没掉,到底是真的没误伤,还是误伤那点量被其他流量波动给盖住了。
误伤率和漏放率说白了是同一根阈值线的两头。阈值一收紧,漏放率下去了,误伤率就上来;阈值一放宽,误伤率下去了,漏放率又抬头。光靠跑几天数据“看感觉”来调,最后一般就两种结局:要么阈值越收越紧,真实用户被挡掉一大片,转化率阴跌还找不到原因;要么阈值越放越松,规则慢慢变成摆设。要跳出这个循环,得把校验工作拆成准备、执行、复盘三个阶段,每个阶段有明确的输入和验收标准。
先把两个指标的定义和口径钉死
误伤率和漏放率听着挺直观,真到配置里,口径不一样,算出来的数能差好几倍。误伤率的分母应该是“被判定为异常并执行非目标页面的请求数”,分子是“其中实际是真实用户的请求数”。漏放率的分母是“实际为异常流量的总请求数”,分子是“其中被判定为正常并进入目标页面的请求数”。
麻烦的地方在于,实际干活的时候你不可能直接知道每个请求的真实身份。所以得有一个能操作的口径来替代。误伤率的可观测代理指标通常是:被拦截请求里,事后通过复核确认是真实用户的比例。复核可以靠人工抽检、用户行为回溯,或者结合后续转化事件来判断。漏放率的可观测代理指标呢,是进入目标页面但随后表现出明显自动化特征的请求占比,比如零停留时间、固定间隔触发、UA 跟后续行为对不上这些。
这俩口径都得靠人工复核当校准基准。没有人工复核的误伤率数字基本不可信,因为它很容易被规则自己的偏见放大。打个比方,你按“UA 为空”拦了一堆请求,然后发现这些请求都没转化,就以为误伤率很低。但 UA 为空的真实用户可能压根不会转化,因为他们可能是某些隐私浏览器的用户,行为模式本身就偏低转化。这时候“没有转化”不能当成“不是真实用户”的证据。
准备阶段:先建立误伤容忍的上限
动任何一条规则之前,先得回答一个业务问题:你能接受多大比例的误伤?这个不能凭感觉拍。一个简单的推导方式是拿误伤带来的直接转化损失跟漏放带来的间接损耗做比较。
假设你目标页面转化率是百分之三,平均一个转化值八十块。那每拦一百个真实用户,就损失二点四个转化,也就是一百九十二块。每天有一千个真实用户进来的话,误伤率每上一个百分点,一天就丢十三个转化。反过来,漏放率每上一个百分点,每天多放进来若干异常请求,这些请求带来的损失通常是间接的,比如消耗广告预算、污染后续行为数据、拉低账户质量评分。
两边损失在数字上很难完全对等,但能帮你定出一个量级。多数跑竞价流量的团队,误伤率能接受的日常上限在百分之三到百分之五之间,再高周报里就能看到明显的转化缺口。漏放率的容忍度就取决于异常流量的破坏力了。异常流量如果只是多花点广告费,漏放率到百分之八还能忍一忍;如果异常流量会触发平台对账户的额外审查,那漏放率最好压在百分之三以下。
这个阶段要产出的东西不是精确数字,而是一个区间。比如“误伤率不超过百分之五,漏放率不超过百分之三”,或者再细一点,“付费流量来源的误伤率上限是百分之四,自然流量来源的误伤率上限可以放到百分之六”。有了这个区间,后面调阈值才有参照系。
准备阶段:给规则做一次静态穿透测试
正式上线前,有一件事比直接跑灰度更有价值:拿一批人工标注过的样本集去穿透规则。样本集不用太大,几百条就够,关键是样本要覆盖几种典型场景。 样本集至少要包含四类请求:明显异常、疑似异常、正常但特征偏冷、正常且特征典型。明显异常和正常典型这两类不用太纠结,规则在这两类上出错才是大问题。真正值得盯的是中间两类。疑似异常请求指的是那些带一两个低频特征但不够判死的,比如 UA 正常但 IP 属于某些高信用风险的段。正常但特征偏冷指的是真实用户里那些看着像机器的,比如关了脚本执行、UA 用的是少见但合法的版本。
把样本集灌进规则引擎,分别统计几个候选阈值下的误伤数和漏放数。这个测试替代不了真实流量验证,但能帮你在上线前就发现那些“一刀切”的规则。比如有条规则是“无 Referer 即判异常”,穿透测试就会发现,有一部分真实用户从收藏夹或二维码进页面时也没有 Referer,误伤率会比预想的高很多。
静态穿透测试的验收标准是这样:在预设的阈值区间内,样本集上的误伤率不超过业务容忍上限的七成,漏放率不超过容忍上限的八成。留出三到两成的余量,是因为真实流量的分布总比样本集复杂,上线后误伤率和漏放率通常只会比静态测试更差,不会更好。
执行阶段:灰度期的抽检才是真正校准误伤率的地方
灰度发布不建议用百分比流量切分来观察误伤,因为误伤本身是低概率事件,小流量下误伤数波动太大,可能今天看是百分之二,明天看是百分之六,根本没法判断。更实际的做法是,灰度期对拦截动作做全量记录,然后对拦截样本做定时抽检。 抽检的样本量要按误伤率的预期精度来定。如果预期误伤率在百分之三左右,想把它估计到正负一个百分点的误差范围内,至少得抽检三百条左右的拦截记录。这个量级对日拦截量几千的站点来说,一两天就凑齐了。抽检方式可以人工逐条看请求特征和后续行为,也可以结合转化回传、二次访问行为做自动标记,但自动标记不能完全替掉人工判断。
灰度期的抽检频率,建议上线头三天每天做一轮,之后如果误伤率稳定且低于上限的六成,可以降为一周两轮。要是某轮抽检发现误伤率突然跳升,得立即暂停灰度,别继续观察。误伤率突然跳升通常意味着某个新特征被规则捕捉到了,但同时也扫到了一批新的真实用户群体。
执行阶段的验收标准是:连续三轮抽检的误伤率点估计都低于业务容忍上限,而且三轮之间没有明显上升趋势。漏放率在这个阶段主要靠进入目标页面的异常特征做静态扫描来估计,因为灰度期流量结构不一定完整,漏放率的估计精度会比误伤率更差。
执行阶段:阈值调整要用单向动作和观察窗口
平衡校验里最容易出事的一步,是把误伤率和漏放率放在同一轮调整里同时优化。比如看到误伤率高,就放宽某条规则;同时又看到漏放率高,就收紧另一条规则。两个动作同时上,观察窗口结束后你根本没法归因哪个动作带来了哪个变化。
正确的做法是一次只动一个参数,动作方向单一,然后等一个完整的观察窗口。观察窗口的长度至少要覆盖一个完整的流量周期。竞价流量的话,周一和周六的流量结构差很多,工作日白天和深夜也差不少。观察窗口如果只覆盖了一个工作日上午,你看到的误伤率可能完全不代表整体。
调整步长也得控制。风险评分类阈值的调整步长建议在五分以内,频次类阈值建议按百分之十到十五的幅度调。调整后至少等下一轮抽检完成再考虑下一次调整。如果连续两轮抽检都显示当前阈值已经满足业务容忍区间,就别继续优化了。误伤率和漏放率都不是越低越好,过了某个点之后,继续压缩漏放率的收益会快速递减,而误伤率的反弹风险却在上升。
复盘阶段:用离线回放验证长期稳定性
灰度通过、正式放量之后,平衡校验还没完。正式跑一段时间后,积累的日志够多了,就可以做离线回放。回放的意义在于,用正式运行期的真实流量去重新评估规则在更长时间窗口内的表现。
回放的方式是把一段时间内进入 Cloak 决策链路的请求日志导出来,剥掉决策结果,保留原始特征,然后在离线环境用不同阈值重新跑一遍。这样能得到一条误伤率和漏放率随阈值变化的曲线。这条曲线比上线前的静态穿透测试更能反映真实分布,因为样本来自真实流量而不是人工构造的。
回放时得注意一个细节:日志里的特征分布会受当前规则的影响。如果当前阈值很紧,大量疑似请求被拦了,那进入目标页面的请求都是已经被筛过的,漏放率的分母本身就有偏差。所以离线回放只能用来比较相对变化,不能直接把回放出来的漏放率当成绝对真值。 复盘阶段的验收标准不只是“数字达标”这么简单,而是看两个指标是不是处于可持续的状态。具体说,如果误伤率长期贴着容忍上限走,说明规则整体偏紧,后续任何特征漂移都可能把误伤率推出安全区。如果漏放率长期低于容忍上限的一半,说明规则可能偏松,还有继续优化的空间。理想状态是两个指标都处在容忍区间的中部,且连续四周没有明显漂移。
实战复盘:一个跑家居类竞价的团队怎么把误伤率从百分之八拉回到百分之二
有个做家居类流量站的团队,日均点击大概一千二到一千五,投放渠道以百度搜索广告为主,服务器用两台四核八 G 的云主机,Cloak 决策在边缘节点完成。他们最初配了一套基于 IP 信誉、UA 特征和访问频率的规则,上线后广告转化率比之前掉了差不多三成。
第一轮排查的时候,他们盯着转化数据看,发现转化数下降,但点击量没怎么变,就怀疑是页面加载问题。折腾了几天静态资源和缓存配置,转化还是起不来。后来把拦截日志导出来按小时排了一下,发现每天被拦的请求里,有相当一部分发生在早上九点到十一点之间,这个时段的用户通常是从公司电脑上访问的,UA 和 IP 特征都比较“干净”,但有一个共同点:很多人的浏览器关了第三方脚本执行。
他们规则里有一条“脚本执行失败即判异常”,这条规则在静态穿透测试时没暴露问题,因为样本集里没覆盖这种“真实用户但脚本环境受限”的情况。灰度期抽检也没发现,因为灰度流量的时段分布偏下午和晚上,恰好绕开了这个时段。上线后全量流量一铺开,早间时段的误伤就集中暴露出来了。
调整过程走了三步。第一步,把“脚本执行失败”从硬判定改成权重加分,脚本失败不再直接拦,而是结合另外两个特征同时出现才触发拦截。第二步,对早间时段单独做了抽检,确认误伤集中在企业网络出口 IP 段和特定浏览器版本上。第三步,把被误伤的 UA 和 IP 段整理出来,放进规则的排除清单里,同时对排除清单做月度复查,避免异常流量利用这个清单长期渗透。
调整完后,日拦截量从日均四百多降到两百出头,转化数两周内恢复到调整前水平的九成五左右。事后复盘他们承认,如果上线前把样本集的覆盖范围扩到企业网络出口和脚本受限环境,这个问题在静态穿透阶段就能发现,不用等到全量上线后靠转化下降来报警。
把平衡校验固化成一张检查单
每次规则变更上线前,按下面的顺序过一遍,能避免大多数因为误伤和漏放平衡失控导致的事故。
- 业务容忍区间有没有明确写出误伤率上限和漏放率上限,还是只写了一句“尽量别误伤”?
- 样本集是否覆盖了明显异常、疑似异常、正常偏冷、正常典型四类请求,中间两类的样本量是否够?
- 静态穿透测试在候选阈值下的误伤率和漏放率,是否分别低于容忍上限的七成和八成?
- 灰度期是否对拦截记录做了定时抽检,抽检样本量是否足够支撑误伤率的精度要求?
- 阈值调整是否一次只动一个参数,观察窗口是否覆盖了完整流量周期?
- 正式运行四周后是否做过离线回放,回放结果是否显示两个指标处于容忍区间中部且无明显漂移?
误伤率和漏放率的平衡校验不是一次性工作,它更像一个持续校准的过程。流量结构在变,设备环境在变,平台审核逻辑也在变。一个今天看着平衡良好的配置,下个月可能就偏了。把校验节奏固定下来,比任何一次巧妙的阈值设定都更有价值。
总结:本文详细介绍了Cloak的相关内容,包括Cloak的原理、配置方法和优化技巧,包括Cloak的原理、配置方法和优化技巧,包括Cloak的原理、配置方法和优化技巧。希望这些Cloak内容对您有帮助。