一、上个月那次争吵:广告验证要的不是“IP多”
上个月团队讨论时,运营直接把后台截图甩过来——同一支投放素材,我们报告里写“北京地区展示正常”,广告主的投放后台却显示朝阳区有23%的曝光压根没跑出去。这活是我们工作室今年接的副业:原本20多台机器跑游戏多开,闲下来的调度经验拿来接广告验证,按城市看广告在各地的真实展示效果。
问题全出在IP上。我一开始以为城市级IP就是“IP库里标注是北京”,跑了一周才发现完全不是一回事。真正决定验证质量的三个指标,我给团队定死:
- 城市级命中率:代理商标注的城市,与IP实际出口地一致的比例
- 脏IP率:被广告平台标记过、请求直接走空包或降权的比例
- ASN一致性:出口IP的运营商类型,机房IP(IDC)在广告风控里天然低一档
第一项我自己写脚本测,不信服务商面板上的数字:
def city_hit(proxy, claimed): r = requests.get('http://ip-api.com/json/?fields=city,as,isp', proxies={'http': proxy, 'https': proxy}, timeout=5) d = r.json() return d['city'] == claimed, d['as']
说实话,各家对“城市级”的口径都不一样,有的按IP注册地算,有的按出口网关算。不问清楚,排行数据看着再漂亮也是废的。
二、三档实测:从38.7%到97.8%的差距
我拿真实的广告验证任务跑了2000次请求,覆盖30个城市,每个城市3次复查,三档方案各分一批,结果摊在下面这张表里。注意住宅代理延迟反而比机房高,这很正常——机房代理的“<10ms”说的是接入层握手,不是出口往返。
| 档位 | 城市级命中率 | 脏IP率 | 出口延迟 | 成本 | 风控触发率 |
|---|
| 免费公开池 | 38.7% | 23.6% | 680ms | 0元 | 41.2% |
| 机房隧道代理 | 71.2% | 12.1% | 92ms | 16元/天起 | 26.5% |
| 城市级住宅动态 | 97.8% | 2.3% | 210ms | 0.0022元/IP起 | 3.1% |
| 静态住宅长效 | 98.4% | 1.9% | 145ms | 按条计费 | 2.7% |
最坑的一次:某家标着“北京”的IP,我顺手跑了个traceroute,出口落在廊坊。对游戏多开来说这无所谓,对广告验证就是致命伤——广告主看到的验证报告和他自己的地域定向数据对不上,这单差点黄了。后来我才明白,能自动按城市调度的服务商不多,池子有3000万+、覆盖365+城市这种参数,得结合命中率一起看才有意义。
三、决策矩阵:按日请求量和精度要求选
很多人问我要代理IP排行,我的答案是先问自己一天跑多少请求。工作室现在日请求稳定在2万次左右,按这个量我做了个速查表:
- 日请求<2000次、只要省级精度:机房隧道代理足够,16元/天封顶,别折腾
- 日请求2000-2万次、要城市级:动态住宅按IP计费,2万次约44元/天,比 tunnels 贵但脏IP率低一个数量级
- 日请求>2万次、有30个固定城市:混合方案——机房代理跑批量初筛,住宅代理只跑关键城市复核,成本能砍掉六成
- 需要长时间保持同一身份(比如跟踪同一广告位7天变化):静态住宅,不计流量计IP条数
老板当初非要省这笔钱,让免费池先跑两天,结果广告主投诉验证报告和投放后台对不上,返工成本远超省下的几十块。这个坑我们踩了三次,现在预算表里这一项没人再吱声。
四、三个容易翻车的细节
第一是C段聚类。有次我换了200个IP,广告平台那边识别成同一个来源——因为全落在两个/24网段里。广告验证看的是IP分散度,不是池子总大小,这个指标服务商从来不写在宣传页上。
第二是会话保持时长。验证一个落地页从加载到曝光追踪完成,至少要维持8-15秒的同一出口,短效IP中途掉线,前端拿到的数据是断的。动态代理要确认粘性窗口,不是每次请求都换才叫好。
第三是接入方式。API提取适合脚本,账密认证适合多机共享,白名单适合固定机器——我们20台机器混用,最后是白名单+账密的组合最省心。这些配置细节,比任何排行榜都影响实际可用率。我长期用的mayihttp.com在这块支持三种接入,调度上确实省了我不少排障时间,但排行这东西,终究得拿自己的业务量去跑一遍才算数。