首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >广告投放中如何识别代理与 VPN 流量:一套多层信号的工程实践

广告投放中如何识别代理与 VPN 流量:一套多层信号的工程实践

原创
作者头像
用户12585837
发布于 2026-10-22 10:51:14
发布于 2026-10-22 10:51:14
1310
举报

背景

效果广告投放中,代理和 VPN 流量是反作弊的老大难:

  • 作弊方用代理池伪造地理位置,拿低价地区的量冲高价地区的 K PI;
  • 设备农场通过 VPN 批量伪装"真实用户",绕过单 IP 频次限制;
  • 反过来,粗暴地把所有代理 IP 一刀切拦截,又会误杀正常用户——企业 VPN、隐私敏感地区的日常使用、浏览器自带安全隧道,都会造成误判。

本文分享一套我们在投放侧落地的多层识别方案。核心思路是:没有任何单一手段能稳定识别所有代理/VPN 流量,实战要靠多层信号加权打分。

一、IP 情报库筛查:第一层,必做

成本最低、覆盖最广的手段,在点击请求进来时就做实时查询。

业界常用的 IP 情报数据源有 Digital Element、IPinfo 等,各家均提供代理 / VPN / Tor 标记,部分还提供"住宅代理"专项识别。几个工程要点:

  • 双库交叉:关键结算场景建议同时查两家,单源误杀率不可控,两家一致标记才走硬拦截;
  • ASN 交叉:商用 VPN 和小众代理服务集中在少数机房 ASN,自有 ASN 名单 + 库标记交叉,比单看标记更稳;
  • 时效性:住宅代理池每月都有新 IP 段流出,情报库必须订阅更新,用半年前的库查当前流量没有意义。

需要明确这层的天花板:库筛出的是"确认风险",筛不出不代表安全。住宅代理(residential proxy)使用的确实是家庭宽带 IP,库标记覆盖率有限。

二、网络层指纹:便宜且难伪造

代理和 VPN 必然在中转链路上留下痕迹,这些信息藏在原始 TCP/IP 数据里:

  • TTL 衰减分析:真实客户端直连服务器的 TTL 有预期范围(Android 常见 64/128 起跳)。观测 TTL 与"声称 IP 直连本服务器"应有的跳数不符,说明中间有节点替你做转发——代理服务器吃掉了几跳 TTL;
  • TCP 协议栈指纹:窗口大小、MSS、TCP 选项顺序因操作系统而异。IP 归属显示"安卓手机"但协议栈指纹像 Linux 服务器,矛盾即信号;
  • MTU 异常:VPN 隧道封装(MTU 往往小于标准 1500)会导致分片行为与正常直连不同。

这层需要在服务端采集:落地页、监测链接重定向服务、API 网关都可以承载。自建成本不高、对抗性强——攻击者换 IP 容易,伪造协议栈指纹难。

三、应用层泄露检测:精度最高的一层

适用于落地页 H5 和自有 App:

  • WebRTC 泄露:浏览器 WebRTC 接口能拿到客户端本地网卡的真实 IP,与请求 IP 一比对——用户挂代理但 WebRTC 漏了真实 IP,直接穿帮;
  • DNS 泄露:诱导客户端做一次受控 DNS 查询,观察解析来源是否为代理服务商的 DNS,与声称的运营商不符即异常;
  • 时区/语言与 IP 地理矛盾:IP 显示洛杉矶,设备时区 UTC+8、系统语言中文。单项都可能是巧合,组合起来就是强信号。

四、移动端特有信号:投放主战场

移动场景有大量 PC 不具备的判别维度:

  • 网络类型一致性:SDK 可读取当前是 WiFi 还是蜂窝。投放定向"蜂窝用户",结果流量全走 WiFi + 代理出口,与定向自相矛盾;
  • MCC/MNC 校验:蜂窝网络下可读取移动国家码 / 网络码,与 IP 归属运营商不一致是硬矛盾——住宅代理再真,也变不出 SIM 卡运营商;
  • VPN 状态检测:Android 可通过 ConnectivityManager 判断设备是否处于 VPN 网络(NetworkCapabilities.hasTransport(TRANSPORT_VPN));
  • 设备农场交叉验证:充电状态恒为插电、传感器长时间静止、机型高度集中,与代理信号叠加后判定置信度大幅提升。

合规提醒:VPN 状态读取需在隐私政策中披露;iOS 侧更谨慎,建议该信号只在风控服务端使用聚合结果,不与归因层之外的系统共享。

五、行为与时空维度:兜底住宅代理

静态信号抓不住的住宅代理,靠行为侧补:

  • 不可能旅行:同一设备 ID 数分钟内出现在物理上不可达的两地;
  • IP 轮换速度:真实用户的出口 IP 在数小时内基本稳定(蜂窝切换基站但同城),代理池用户表现为跨城市、跨国家的频繁跳变;
  • 激活后行为:代理流量常有"装完即弃"特征——无后续事件、会话极短、无次日留存。

注意最后一类只作降权信号、不作硬判,避免误杀真实 VPN 用户。

六、工程实现:打分制而非硬规则

代码语言:javascript
复制
# 示意:多信号加权评分
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 放行

落地有三个要点:

  1. 实时前置:在点击监测与 SDK 首启时同步计算,命中即拦截/标记。事后归因回滚的成本远高于前置拦截;
  2. 灰度验证:新规则先"仅标记"运行 1~2 周,对比标记组与正常组的留存、付费差异,确认误杀率可接受再升级为拦截;
  3. 对抗迭代:住宅代理库持续更新、攻击者会主动禁用 WebRTC 等公开检测手段,指纹类信号要定期轮换与增补。

七、几个容易踩的坑

  • 企业 VPN 误杀:大量真实用户上班挂公司 VPN,IP 显示为企业出口。建议企业 ASN 单独建白名单层;
  • 浏览器自带 VPN:用户无感知、行为完全正常,只能靠情报库 + 行为层兜底,接受一定漏放;
  • GEO 差异:部分中东、东南亚国家正常用户普遍挂 VPN,这类地区的硬拦截阈值应放宽,改走降权与渠道谈判,否则会把真实量挡在门外。

结语

识别代理/VPN 流量没有银弹,稳定的做法是分层叠加:情报库做广谱初筛,网络指纹与移动信号做精确打击,行为层做住宅代理兜底,最终以加权评分 + 灰度上线 + 分 GEO 调阈值的方式工程化。单点手段都会被绕过,体系化的多层信号才有稳定的识别率与可控的误杀率。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 背景
  • 一、IP 情报库筛查:第一层,必做
  • 二、网络层指纹:便宜且难伪造
  • 三、应用层泄露检测:精度最高的一层
  • 四、移动端特有信号:投放主战场
  • 五、行为与时空维度:兜底住宅代理
  • 六、工程实现:打分制而非硬规则
  • 七、几个容易踩的坑
  • 结语
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档