在广告投放与风控实践中,我们经常会遇到一个棘手的问题:AF(反作弊)系统已经判定某部分流量存在异常,但它到底是通过代理(Proxy)伪装的,还是 VPN 切换的,抑或是直接来自云机房的数据中心流量?这三者的风险等级和处理策略截然不同,混为一谈要么误杀正常用户,要么放走黑产。
本文将从工程实践角度,梳理一套可落地的区分方法论,核心围绕 IP 网络属性、行为指纹特征、地理时间逻辑三个层次展开。
这是最直接、成本最低的区分手段。核心思路是查询 IP 的归属信息,判断其网络类型。
关键字段解析:
net_type(网络类型):若值为 数据中心(Data Center) 或 机房,则基本可判定为机房流量。这类 IP 通常归属于云服务提供商的 ASN(自治系统号),如 AWS、阿里云、腾讯云等,常被用于部署自动化脚本或进行批量点击。is_proxy / is_vpn / is_tor 等标识:若这些布尔字段为 true,则表明该 IP 当前或近期被用于代理/VPN 服务。这类标识需要依赖实时更新的威胁情报库,因为代理 IP 池的变化频率极高,静态库几乎无效。技术选型提醒: 实现这一层能力,可以选择自建 IP 库(如维护 MaxMind GeoIP 的免费版),也可以接入第三方商业数据源(如 Digital Element、IP数据云等)。需要注意,免费库的代理/VPN 标识更新滞后严重,生产环境建议评估数据新鲜度指标。
伪代码示例:
def classify_ip(ip):
info = ip_database.query(ip)
if info.net_type == "Data Center":
return "机房流量"
if info.is_proxy or info.is_vpn:
return "代理/VPN 流量"
return "普通住宅/企业流量"仅靠第一层远远不够,因为黑产现在大量使用“住宅代理”——IP 本身是真实家庭宽带,net_type 显示为“住宅”,但实际被用作代理节点。此时需要引入行为指纹检测。
常用检测维度:
存活时间 < 3天 且请求频次异常高(例如每秒数十次请求),则极大概率是秒拨 IP 或动态代理,常用于短时刷量。这一层不直接判断 IP 类型,但能有效辅助确认是否为“地域伪装”行为,从而反推代理/VPN 的使用。
在实际工程落地中,我们通常不会基于单一维度做二元判断,而是构建一个综合风险评分(Risk Score) 模型,对不同维度赋予权重,最终得到一个风险分数。
一个简化的评分表参考:
检测维度 | 低风险(0~30分) | 中风险(31~70分) | 高风险(71~100分) |
|---|---|---|---|
网络类型 | 住宅/企业IP | 移动蜂窝网络 | 数据中心/机房IP |
代理/VPN标识 | 无任何代理标记 | 历史曾有代理记录 | 当前活跃的代理/VPN |
IP存活时间 | >180天 | 30~180天 | <3天 |
地理跳跃 | 无跳跃或常驻 | 同国家内跳跃 | 跨国跳跃且时差>6h |
分级处置策略:
区分代理、VPN 与机房流量,本质上是一场与黑产之间的“特征博弈”。没有一招制敌的解决方案,只有不断叠加特征维度、动态调整权重,才能在不误伤正常用户的前提下,有效降低无效流量带来的损失。
上述方法论已在多个日均请求量过亿的广告系统中得到验证,希望能为你的反作弊体系建设提供一些参考。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。