去年我们给一个跨境投放团队做广告验证,第一版脚本的核心逻辑短得像段伪代码:
def verify_ad_geo(proxy, expect_city="Dallas"):
ip = requests.get("https://api.ipify.org", proxies=proxy, timeout=6).text
geo = ipapi.lookup(ip) # 第三方IP归属库
page = requests.get(LANDING_URL, proxies=proxy, headers=UA, timeout=8).text
return geo.city, ("Dallas" in page)
跑了一周,报表开始对不上:geo.city 返回 Dallas,落地页给的却是西语版本和墨西哥促销价。业务方直接甩过来一句“你们验的到底是哪个地区”。
问题不在代码,在代理。我把脚本压下来重做了一组对照实验,这篇文章就是那次的账本。
实验怎么搭:三档代理、12个城市、3600次请求
目标是我们自己的广告落地页(CDN 会按出口IP回源不同地域版本),城市选择覆盖投放量前12的市场:达拉斯、洛杉矶、纽约、伦敦、法兰克福、巴黎、东京、首尔、新加坡、悉尼、圣保罗、多伦多。每个城市固定300次请求,总计3600次,同一UA、同一超时、同一重试策略(最多2次),避免变量污染。
| 档位 | 类型 | 标称覆盖 | 计费方式 | 接入方式 |
|---|
| A | 免费公开池 | 无承诺 | 0元 | 自行抓取 |
| B | 机房代理(数据中心IP) | 365+城市 | 0.0022元/IP起 | API提取 |
| C | 城市级住宅/隧道代理 | 城市定向 | 约16元/天隧道 | 账密认证+白名单 |
C档里我用的是蚂蚁代理的城市定向隧道,选它没别的原因:我需要按城市逐条指定出口,而不是随机轮换。这一点后面会解释为什么是硬需求。
地域精度:标称365城,实际命中只有62%
校验做了三重对账,只信一个源一定会被骗:出口IP交给第三方库反查、落地页自身返回的地域Header、页面文案里的城市名。三者同时一致才算命中。
| 档位 | 地域命中率 | 平均延迟 | 可用率 | 单请求失败重试率 |
|---|
| A 免费池 | 31.4% | 1840ms | 52.7% | 61.2% |
| B 机房代理 | 62.3% | 312ms | 97.8% | 18.5% |
| C 城市级隧道 | 94.1% | 286ms | 99.6% | 4.3% |
B档掉的那38个百分点很有意思。抓了出口ASN一看,它的“365城市”池里,实际在用的C段集中在几个机房集群,所谓城市标签是IP库归属,不是真实路由位置。广告平台的geo判定比我们第三方库更严,于是就出现开头那种页面对不上的情况。
C档也没到100%。我指定杭州时拿到过一个绍兴的出口,蜂窝基站定位本身有几十公里漂移——这类误差在跨境投放大区(如德州、加州)里不影响结论,但做城市级商圈验证时要留意。
脏IP率的坑:复用率和黑名单命中才是隐形税
一直盯着单价的人容易漏掉这项。我统计了24小时内同一IP被我们撞见的次数,以及请求触发验证码/429的比例。
- A档免费池:IP复用率47%,验证码触发率29.8%,同一IP在半天内被不同任务重复使用是常态。
- B档机房代理:复用率11%,但Google Ads侧黑名单命中6.4%,机房段被广告平台重点照顾。
- C档住宅隧道:复用率2.1%,验证码触发率3.7%。
说实话我一开始以为B档更划算——单价低、延迟也能看,按纯IP成本算是C档的七分之一。后来跑满3600次才发现,脏IP带来的重试和误判会把差价钱全吐回去,还多搭进人工核对的时间。
换个算法:有效验证成本才是选型依据
我把结论简化成一个公式,做类似业务的可以直接套:
有效验证成本 = 单IP成本 ÷ (地域命中率 × (1 − 重试率))
| 档位 | 单IP成本 | 命中率×稳定率 | 有效验证成本 |
|---|
| B 机房代理 | 0.0022元 | 0.508 | ≈0.0043元 |
| C 城市级隧道 | ≈0.0068元(按日隧道折算) | 0.900 | ≈0.0076元 |
差距从七倍缩到1.8倍。而命中率一旦低于50%,落地产出的是“看起来有数据、实际不可用”的报表,这个成本没法用钱算。
我的判断很直接:广告验证、区域价格监控这类地域本身就是被测对象的场景,别在机房IP上省钱,直接上城市定向;如果是纯内容抓取、对地域无强要求,机房代理的性价比仍然最好。我们现在的组合是隧道代理打底跑常驻任务,API提取补峰值,两套都走账密+白名单,出问题能快速定位是哪条链路。
代码和配置都在上面了,实验的可复现性我尽量做足了,但样本只有3600次、12个城市,你要投的是上百个地区,建议先跑一遍同样的对照再定档。城市定向这块的参数和定价在 mayihttp.com 上有明细,可以自己核一遍再决定要不要为精度买单。