上周整理风控日志,我把自己写的那条打分规则翻了出来,它在生产环境里跑了快一年:
# 反爬风控评分(简化版)
if ip.asn_type == "IDC" and session.cookie_age < 3:
score += 35 # 机房IP + 新会话,进观察池
if ip.geo_city != payload.claim_city:
score += 60 # 声明城市与IP归属地不符,直接拒
if tls.ja3 in known_headless_list:
score += 25
规则不复杂,但它说清了一件很多人不爱听的事:代理IP被封,多数时候不是因为你请求太频繁,而是它在TCP握手那一刻就已经不像一个真人了。我现在的工作分两半,一半是拦别人的爬虫,另一半是给自己团队的业务找不被拦的IP——广告验证平台,需要模拟不同城市真实用户去看广告到底投放成什么样。这种活对IP的要求,比普通采集苛刻得多。
站在防守方:我凭什么一眼看穿你的IP
我拦流量看的是三层信号。第一层是ASN和网段,机房IP段是公开情报,抓到一段就打标,这个几乎零成本。第二层是归属地一致性,这也是最致命的:广告验证场景里请求会声明"我在成都",如果IP的运营商归属在廊坊,我的规则直接加60分,超过60分拒绝。
第三层是行为节奏。同一个C段在2分钟内出现300次请求、Cookie全部是新的、UA和TLS指纹对不上,这三条凑齐两条就进黑名单。我实测过,低价动态池平均在38.5次请求后就会触发我的观察池规则,而免费代理撑不过7次。
换句话说,从对手角度看,代理池的"规模"是最没用的指标。3000万IP听着唬人,如果它们集中在少数几个C段、归属地还漂移,在我这里就是同一批人换了件衣服。
迁移前的账:免费方案到底贵在哪
说实话,一开始我并没有打算换。团队预算紧,我甚至用免费代理跑了两周,还写了层重试逻辑兜底。跑完数据我自己都愣了——广告验证失败的样本里,68%是IP归属地与目标城市不符,不是超时,也不是被封。
| 指标 | 免费代理 | 低价动态池 | 城市级专业池 |
|---|
| 城市归属地准确率 | 41.7% | 62.3% | 99.4% |
| 封禁前平均请求数 | 6.2 | 38.5 | 410+ |
| 平均首包延迟 | 1240ms | 187ms | 8.7ms |
| 广告验证成功率 | 33.5% | 71.3% | 99.2% |
| 每万次验证IP成本 | 0元+人工4小时 | 9.8元 | 22元 |
那4小时人工是我每周花在换源、剔坏IP、补重试上的时间,按人力折算比买IP贵得多。我一开始以为延迟是最该优化的项,后来才发现归属地准确率才是决定验证结果能不能用的那一项,延迟只是体验问题。
选型与切换:三个硬指标加四个动作
重新选型时我只认三个指标:能不能按城市(甚至按区)精确提取、ASN类型是不是住宅或移动基站、接入方式是否够灵活。广告验证还需要按城市做并发隔离,所以API提取+账密认证的组合比纯隧道更好控。
切换我分了四步走,没有一刀切:
- 新旧两套池并行跑,同一批广告位双方各采一次,做城市维度对照
- 把归属地不符的样本单独打标,量化到底差在哪个城市
- 按10%→30%→70%三档放量,每档观察24小时失败率曲线
- 留一个环境变量开关,异常时5秒内回滚到旧通道
配置上关键就两行,城市参数和并发上限必须显式传,不要指望服务端猜:
proxy = f"http://user:pass@gateway:port?city={target_city}&session={sid}"
MAX_CONCURRENCY = 12 # 单城市不超过12并发,避免自己把自己打成异常我们最后用的是综合性价比最好的一档动态池,0.0022元/IP起,按天算下来比原来的低价池贵了约2.2倍,但省掉的人工和返工远不止这个数。它覆盖365+城市、三大运营商,HTTP/HTTPS/SOCKS5都能走,延迟实测稳定在10ms以内。
验证效果:一个反直觉的发现
全量切完两周,数据是这样的:广告验证成功率从71.3%稳定到99.2%,平均首包延迟8.7ms,单城市并发12时可用率99.9%。风控侧更直观——同一个C段在我自己规则里的观察池命中次数从每天1200次降到11次。
意外收获是会话粒度。我原本按"每个请求换一个IP"配,想着越散越安全,结果跑了一周发现失败率反而更高。后来才想明白:同一广告位需要连续两次采样做对比,两次来自不同城市乃至不同运营商,数据根本对不上。改成同城市会话粘性保持3分钟之后,验证结果的一致性肉眼可见地好了。
这个方案在我们日均几十万次验证的量级完全够用。如果你要跑到千万级,可能得考虑自建调度层做池内二次筛选,光靠服务商提供的轮换策略会不够细。
补一句选型上的个人偏好:账密认证加白名单双通道,比纯API提取省心,尤其是CI流水线里,密钥泄漏的风险小得多。目前我们主力用的就是这套,官方入口在 mayihttp.com,想复现我这套对照实验的话,城市参数和会话粘性这两个配置项记得都开上。