指南

为注册流程构建简单的 IP 信誉检查

对于大多数小型注册表单来说,专门的欺诈检测服务有些大材小用。一个简单的检查,把 IP 地址所显示的信息与注册表单所声称的信息进行比较,本身就能拦截相当一部分明显不符的注册尝试。

在注册时获取 IP 详情

GET /v1/ip?ip=198.51.100.200
{
  "status": "ok",
  "ip": "198.51.100.200",
  "version": 4,
  "found": true,
  "country": "Brazil",
  "country_code": "BR",
  "region": "Sao Paulo",
  "city": "Sao Paulo",
  "postcode": "01310",
  "lat": -23.5505,
  "lon": -46.6333,
  "timezone": "America/Sao_Paulo",
  "asn": 8901,
  "org": "Example Cloud Provider"
}

将国家与表单输入进行比较

如果注册表单要求填写账单国家,而输入的值与 IP 查询得到的 country_code 不符,仅凭这一点并不能证明有任何问题,因为旅行和使用 VPN 都很常见,也完全正当。请把不符视为给一个简单分数加一分,而不是自动拒绝。

权衡网络类型

org 字段常常能揭示一个地址属于住宅 ISP,还是数据中心或云托管服务商。来自云托管网络的注册(真实的个人客户很少会从这类网络浏览),值得比来自可识别的住宅 ISP 的注册打更高的分,不过同样,单凭这一点也不应自动拒绝。

第二个示例:一份小型已知 ASN 列表

如果您注意到某些特定的 ASN 值在滥用注册中反复出现,可以维护一份包含这些 asn 编号的简短列表,每当新注册与其中之一匹配时就加上固定分数。这是一种把该模式固定下来、供今后使用的轻量方法,对于范围如此有限的检查,无需一个完整的第三方 ASN 信誉数据库。

if ip_info["asn"] in known_abuse_asns:
    score += 2

将多个信号合并为一个分数

把少量简单检查(国家不符、托管网络来源,以及您自己注册流程特有的其他任何因素)加总成一个数值分数。对于超过您所设阈值的注册,将其转入人工审核或额外的验证步骤(例如邮箱确认),而不是直接拦截。

需要避免的常见错误

不要在没有任何其他背景信息的情况下,把每个来自 VPN 或托管 IP 段的注册都自动评为高风险。很多正当的客户是从恰好经由数据中心 IP 段路由的公司网络浏览的,或者出于完全普通的隐私原因使用 VPN。把网络类型作为多个信号之一来加权,而不是作为一票否决的标记,可以避免这项检查因误报而拒绝真实客户。

一个边界情况:同一共享地址的大量注册

共享的办公网络,或大型移动运营商的运营商级 NAT,可能会在短时间内让大量彼此无关的正常注册来自同一个 IP 地址。如果您在检查中还统计了每个 IP 的注册数量,请把这个阈值设置得足够宽松,以容纳这种情况,或者把它与国家和网络信号结合起来观察,而不是单独作为一条规则。

把握分寸

这类检查旨在拦截明显的低成本滥用,而不是为欺诈损失是严重问题的企业替代真正的反欺诈系统。请把它当作第一道过滤,而不是最终裁决。

请求成本

每次注册尝试查询一次,就是一次请求。即使表单持续收到注册,在典型流量下也能完全落在每个密钥附带的每天 2,500 次免费请求之内。通过 X-Quota-Used 和 X-Quota-Free-Remaining 响应头,您可以简单地掌握注册尝试突然激增时消耗了多少配额。

由几个 IP 衍生信号构成的轻量评分,比什么都不做能拦截更多问题,又没有专用反欺诈平台的开销。IPv4 查询文档列出了此类检查可用的所有字段。