如何在不误伤真实用户的情况下防止免费试用滥用
为什么有人用新账号反复开启你的免费试用、把这些账号联系起来的信号,以及一套既能阻止重复试用、又让真实用户继续免卡试用的决策流程。
免费试用滥用的真实样子
免费试用滥用,就是同一个人用新账号一次又一次地开启你的试用,从而永远不用付费。它很少像一次攻击:没有流量洪峰,也没有被盗的银行卡。你看到的是一股稳定的细流,每个账号单独看都很正常:
- 一个新的一次性邮箱。来自数万个一次性域名之一的临时地址,用来确认一次账号,之后再也不用。
- 同一个 Gmail,换个写法。
jane.doe@gmail.com、janedoe+2@gmail.com和j.a.n.e.doe@gmail.com都会进入同一个收件箱。 - 同一台笔记本、同一个家庭网络。浏览器、屏幕、字体和 IP 地址都和一个月前创建的账号完全一样。
这些账号都能通过邮箱验证,所以简单的“请确认你的邮箱”毫无作用。注册时要回答的问题不是“这个邮箱是真的吗?”,而是“我们以前见过这个人吗?”。
为什么常见做法弊大于利
每次试用都要求绑卡
绑卡门槛能挡住大多数重复试用,但也会挡住大量只想先体验产品的真实访客。你是用转化问题换掉了滥用问题。而且一张卡可以在多个账号间重复使用,所以单凭银行卡也证明不了这是一个新的人。
只按邮箱域名拦截
一次性域名黑名单只能挡住最懒的滥用者。它完全识别不了 Gmail 别名,而复制进代码的名单很快就会过时,因为新的一次性域名层出不穷。详见如何在注册时拦截一次性邮箱。
按 IP 地址拦截
按 IP 拦截是最粗糙的手段。整个办公室、大学和移动运营商都在共享地址,而有决心的滥用者几秒钟就能换网络。IP 是评分中有用的信号,但不能单独作为拒绝的理由。
把新账号和旧账号联系起来的信号
与其用一条硬规则,不如观察多个弱信号并把它们加起来。任何一个都不应单独做决定,但叠加起来,重复试用就一目了然。
| 信号 | 能识别什么 | 误判风险 |
|---|---|---|
| 规范化后的邮箱已存在 | 已有账号的 Gmail 点号和加号变体 | 低:本来就是同一个收件箱 |
| 一次性域名 | 为一次注册而建的一次性邮箱 | 低,前提是名单够新 |
| 域名无法收信 | 拼写错误和编造的域名 | 低 |
| 与已有账号同一设备 | 同一个浏览器创建第二个账号 | 中:家庭和共用电脑 |
| 今天同一 IP 注册很多次 | 来自同一网络的突发注册 | 中:办公室、校园、运营商 NAT |
| 数据中心或 Tor 地址 | 在服务器上运行的脚本、匿名流量 | 中:部分 VPN 用户 |
规律很清楚:误判风险低的信号可以占较大权重,而也会命中真实用户的信号只应让分数小幅上升。
让真实用户满意的决策流程
我们见过的最有效配置其实很少拦截。它们几乎给所有人免卡试用,只在分数高时增加摩擦:
- 在服务器上为注册打分,时机是表单提交之后、试用开始之前。
- 允许(低分):正常开始试用。这应该是绝大多数。
- 复核(中等分数):开始试用,但要求一样对滥用者比对真实用户更贵的东西——一张卡、一个手机号,或在验证前给较小的额度。
- 拦截(高分):不开始试用。提供付费套餐或联系方式,而不是死胡同,因为分数是概率,不是证据。
经验法则:和姐妹共用一台笔记本的人,绝不应仅因此被拦截。共用设备的信号只能和更强的信号叠加,比如相同的邮箱。
如何接入你的注册流程
你需要两样东西:注册页上能识别浏览器的组件,以及在发放试用前的服务器端检查。用 Attrelix,就是一个 script 标签加一次 API 调用:
<!-- 注册页 --> <script src="https://attrelix.com/v1.js" data-key="pk_live_…" async></script>
# 服务器,开始试用之前(Python) r = requests.post("https://attrelix.com/v1/check", timeout=3, headers={"Authorization": f"Bearer {SECRET}"}, json={"email": email, "ip": ip, "visitor": form["attrelix_visitor"]}) decision = r.json().get("decision", "allow") if r.ok else "allow" if decision == "allow": start_trial(user) elif decision == "review": start_trial(user, require_card=True) else: offer_paid_plan(user)
注意兜底逻辑:如果检查超时,就放行用户。反欺诈检查绝不应成为你注册功能宕机的原因。
先观察,再收紧
先从仅观察模式开始:记录一到两周的决定但不采取行动,然后查看那些本会进入复核的账号。如果几乎都是重复试用,就打开相应处理。如果其中有真实用户,就提高阈值,或降低把他们推进去的那个信号的权重。用你自己的数据调参,而不是照搬别人的默认值。
小结
- 重复试用逐个看都很干净,要找的是与旧账号的关联。
- 规范化邮箱、检查一次性域名、识别设备。
- 把信号累加成分数;只有强信号可以单独做决定。
- 复核时增加摩擦而不是拦截,出错时一律放行。