效果广告投放中,代理和 VPN 流量是反作弊的老大难:
本文分享一套我们在投放侧落地的多层识别方案。核心思路是:没有任何单一手段能稳定识别所有代理/VPN 流量,实战要靠多层信号加权打分。
成本最低、覆盖最广的手段,在点击请求进来时就做实时查询。
业界常用的 IP 情报数据源有 Digital Element、IPinfo 等,各家均提供代理 / VPN / Tor 标记,部分还提供"住宅代理"专项识别。几个工程要点:
需要明确这层的天花板:库筛出的是"确认风险",筛不出不代表安全。住宅代理(residential proxy)使用的确实是家庭宽带 IP,库标记覆盖率有限。
代理和 VPN 必然在中转链路上留下痕迹,这些信息藏在原始 TCP/IP 数据里:
这层需要在服务端采集:落地页、监测链接重定向服务、API 网关都可以承载。自建成本不高、对抗性强——攻击者换 IP 容易,伪造协议栈指纹难。
适用于落地页 H5 和自有 App:
移动场景有大量 PC 不具备的判别维度:
ConnectivityManager 判断设备是否处于 VPN 网络(NetworkCapabilities.hasTransport(TRANSPORT_VPN));合规提醒:VPN 状态读取需在隐私政策中披露;iOS 侧更谨慎,建议该信号只在风控服务端使用聚合结果,不与归因层之外的系统共享。
静态信号抓不住的住宅代理,靠行为侧补:
注意最后一类只作降权信号、不作硬判,避免误杀真实 VPN 用户。
# 示意:多信号加权评分
def proxy_score(ctx):
score = 0
if ctx.dual_db_flagged: score += 40 # 双情报库一致标记
if ctx.ttl_mismatch: score += 25 # TTL 衰减不符
if ctx.vpn_active: score += 20 # 设备 VPN 状态
if ctx.mcc_mnc_mismatch: score += 20 # 运营商与 IP 矛盾
if ctx.impossible_travel: score += 15 # 不可能旅行
if ctx.no_post_install_events: score += 10 # 装完即弃
return score
# >= 60 硬拦截;30~59 降权/标记观察;< 30 放行落地有三个要点:
识别代理/VPN 流量没有银弹,稳定的做法是分层叠加:情报库做广谱初筛,网络指纹与移动信号做精确打击,行为层做住宅代理兜底,最终以加权评分 + 灰度上线 + 分 GEO 调阈值的方式工程化。单点手段都会被绕过,体系化的多层信号才有稳定的识别率与可控的误杀率。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。