工程原则
我们所信奉的——以及它如何在产品中体现出来。
这些是运行约束,而非口号。其中每一条都可以针对产品进行验证。如果你发现例外,要么原则有误,要么实现有误;两者都是 bug。
01. 校准优先于判定
由你的反欺诈团队做出最终决定——Noxtica 给他们提供证据。
我们不返回”是”或”否”。我们返回风险等级、置信度指标,以及产生它们的原因。一次拒付不等于一次登录失败。一次新用户注册不等于一个重置了缓存的回访用户。你了解自己的上下文。我们只是给你更好的输入。
你会在哪里看到它
- 每次验证始终返回风险等级、置信度指标,以及评分背后的原因——绝不会是一个单一的”这是机器人”标记。
- 运营者控制台按类别展示评分明细,而不仅仅是最终等级。
- 如果你想在其上构建自己的分类器,底层信号是可访问的。
权衡
你无法把 Noxtica 塞进一行”如果是机器人就拦截”的代码里。你要编写一个策略。策略很短——通常十到二十行——但它归你所有。
02. 可举证的决策
当某个会话在真实客户身上被标记时,你的工程师需要为该决策辩护——向法务、向产品、向客户本人。
每一个检测类别都记录在 /docs/threat-categories 中,每一个阈值都可审计。如果某个结果让你感到意外,它是可追溯的。如果你对某个校准有异议,它是可调整的。
你会在哪里看到它
- 验证中的原因名称与文档中的名称逐字一致。没有代号,也没有营销式的重新命名。
- 每个阈值都附有其依据和背后的总体数据。
- Noxtica 报告的信号是一份有文档记录的约定,而不是随时会变动的目标。
权衡
我们不能悄悄地调整模型。收紧某个阈值意味着写下这个变更、在更新日志中给出理由,并以带版本号的更新形式发布。这比黑盒模型要慢。我们认为这种权衡是值得的。
03. 误报不是可接受的损失
一个被拦截的客户永远不会回来。一个漏掉的机器人是一次你可以申诉的拒付;一个被拦截的真人则是流失——而流失会复利累积。
我们宁愿漏掉一个机器人,也不愿拦截一个使用了不常见但完全合法配置的真实客户。阈值有意偏向放行边界情况。风险等级的存在是为了让你选择自己的权衡,但默认值之所以保守是有原因的。
你会在哪里看到它
- “观察”和”挑战”等级被刻意拉开距离,使得介于两者之间的群体大多是机器人,而非人类。
- 已识别的隐私浏览器在设计上以宽松方式处理,而非事后补丁。
- 我们示例中的默认策略是发起验证挑战,而非拦截——拦截保留给最高等级,而按设计,只有多个信号一致时它才会触发。
权衡
在默认设置下,你的捕获率低于调得更激进的竞争对手。我们认为,在一年的尺度上你会以绝对数量捕获更多机器人,因为你一开始就保留了更多真实客户。
04. 构建即隐私
你的数据保护官睡得更安稳,因为我们是为此设计的。
采集器不采集任何个人数据。默认不存储原始网络地址——只保留国家等粗粒度上下文,派生后即丢弃。验证期间不发生第三方网络调用。我们存储的是经过混淆的单向摘要,绝非原始值,且签名密钥按固定周期轮换。我们无法出售从未采集过的东西。
你会在哪里看到它
- 采集期间,浏览器恰好发出一个请求:以同源方式将密封的结果发送到你自己的后端。没有第三方遥测,没有分析信标,不从其他地方加载字体。
- 我们的验证不需要任何额外查询——完整的信息就在结果里,我们无需重新获取任何东西。
- 数据保留默认值因套餐而异,且应要求的硬删除在存储层强制执行,而非作为软标记。
权衡
我们不能用跨客户数据来丰富模型。在某个客户网站上见过的机器人,不会自动被另一个客户的验证所知悉。我们使用总体级别的聚合数据进行校准,但绝不跨客户关联个体。
各项原则如何组合
这四条原则并非彼此独立——它们相互强化。
- 校准优先于判定(01)只有在决策可举证(02)的前提下才能成立,因为没有文档化的推理过程,你就无法读懂校准。
- 可举证的决策(02)使得规避误报(03)可被验证——你可以审计阈值,并证明默认值是保守的。
- 构建即隐私(04)使得模型清晰可读。我们没有上千个跨客户特征;只有几十个,每一个都与你能在文档中读到的信号相关联。
如果我们要增加第五条原则,它必须强化这四条。如果不能,我们就不会发布它。
延伸阅读
- 为何选择校准而非判定 — 驱动原则 01 的理念。
- 威胁类别 — 原则 02 所承诺的有文档记录的界面。
- 用例 — 原则 03 和 04 在生产中的样子。