如何阻止 AI 应用的免费额度滥用
AI 产品的免费额度消耗的是真实的推理成本。额度农场如何运作、为什么按账号限流挡不住它们,以及应该在注册流程的哪一步做决定。
为什么 AI 产品的免费额度与众不同
在大多数 SaaS 产品里,一个虚假账号只占数据库里的一行,外加指标里的一点噪音。在 AI 产品里,每个免费账号都可能花掉真金白银:每个提示词都在你付费的 GPU 上跑推理。免费额度几乎等同现金,而凡是能变现的东西都会吸引自动化。
这也改变了滥用免费套餐的人群。除了只想多用点免费额度的人,还会出现额度农场:用脚本批量注册账号,收集每个账号的免费额度,然后转卖访问权,或者用它通过你的 API 跑自己的任务。
额度农场如何运作
细节各不相同,但套路一致:
- 账号由脚本创建,通常是由 Puppeteer、Playwright 或 Selenium 驱动的无头浏览器,有时是会随机化指纹的反检测浏览器。
- 邮箱是一次性的:一次性域名、农场主自己的 catch-all 域名,或者一个用点号和加号写出几十种形式的 Gmail 账号。
- 流量来自服务器:云和主机服务很便宜,所以很多农场就跑在上面,有时还套着代理或 Tor。
- 额度被迅速耗尽,往往就在最初几分钟内,任何用量告警都来不及反应。
为什么按账号限流没用
限流防的是单个账号用得太多。农场从不这么干:每个账号都规规矩矩地待在自己的免费额度之内。滥用体现在账号的数量上,所以防线必须设在注册环节、在发放额度之前——而不是之后在用量层面。
正确的问题不是“这个请求是否滥用?”,而是“这个新账号该不该拿到免费额度,拿多少?”。
注册时暴露农场的信号
自动化
被自动化控制的浏览器会留下痕迹:navigator.webdriver 为 true、HeadlessChrome 用户代理、连接着 DevTools 协议客户端、WebGL 软件渲染、窗口尺寸为零。细心的操作者可以逐一抹掉,所以组合使用效果最好。我们的检测无头浏览器指南会逐个讲解。
网络
真实用户从家庭和移动网络注册。来自云 IP 段(AWS、Google Cloud、Oracle、DigitalOcean、Linode)和 Tor 出口节点的注册值得更多关注,今天创建了大量账号的地址或子网也一样。
邮箱
一次性域名、无法收信的域名,以及已有账号的 Gmail 别名。参见 Gmail 点号和加号别名。
账号之间的关联
农场最强的信号是它的账号彼此关联:同一设备、同一规范化邮箱、同一卡指纹。一个关联账号只是弱证据;十个就是一个农场。
检查放在哪里
在注册表单提交之后、给账号充值额度之前,在服务器上调用反欺诈检查。如果额度由后台任务或邮箱确认时发放,就把检查放在那一步之前。关键是:决定要先于额度存在。
// Node.js,发放免费额度之前 const res = await fetch("https://attrelix.com/v1/check", { method: "POST", headers: { Authorization: `Bearer ${process.env.ATTRELIX_SECRET}`, "Content-Type": "application/json" }, body: JSON.stringify({ email, ip, visitor: req.body.attrelix_visitor }), signal: AbortSignal.timeout(3000), }).catch(() => null); const decision = res?.ok ? (await res.json()).decision : "allow"; const credits = { allow: 100, review: 10, block: 0 }[decision] ?? 100; await grantCredits(user.id, credits);
分级额度胜过一刀切的拦截
对 AI 产品效果很好的一种模式,是按风险调整免费额度,而不是在全给和不给之间二选一:
- 允许:完整的免费额度。
- 复核:一小部分额度——够体验产品——其余在绑卡、手机号或邮箱验证之后发放。
- 拦截:没有免费额度;提供付费套餐。
落入复核的真实用户仍能体验产品,而每个账号只拿到十分之一额度的农场,会失去大部分收益。
算清楚代价
给问题定个数:把新账号获得的免费额度价值,乘以你的检查本会送去复核或拦截的账号数。这就是什么都不做的月度成本,也告诉你值得增加多少摩擦。Attrelix 控制台会根据你的额度价值算出这个数。
小结
- 额度农场不会超出单账号限制;要在注册时拦住它们。
- 综合自动化、网络、邮箱和账号关联信号。
- 在额度产生之前做决定,检查不可用时放行。
- 按风险分级发放额度,而不是直接拦截。