凌晨三点的电话,炸出的是成本结构问题
去年11月的一个凌晨三点,值班手机响了:比价任务全线超时。后台监控面板上,6家OTA的抓取成功率在12分钟内从94%掉到11%。我爬起来一查,HTTP代理池的800个IP只剩57个能连通,其余全是超时或者403。
更让我冒汗的是数据质量——有个SKU在成都的报价被写进了三亚的线路里。这是典型的出口IP地域漂移:代理网关实际落到了西南节点,但业务方以为是华南。那一晚的损失不好精确计算,但第二天运营同事告诉我,三条热门线路的价格页面错误,影响了两天投放。
说实话,我一开始的判断是“池子不够大,加钱买量”。跑了一周的真实数据才发现方向错了:问题不在IP数量,而在我从来没把成本结构算清楚过。只盯着每个IP多少钱,把运维工时、封禁返工、地域错配全当成了“意外”。
三档方案,先把显性成本摊开
我们的量级是这样的:8万条线路 × 6家OTA,每天约48万次查询。因为这个场景封禁快,每个IP平均只敢复用5次左右,折算下来每天需要约9.6万个出口IP。按这个基数,三档方案的账面对比如下:
| 方案 | 单日显性成本 | 可用率实测 | 地域可控性 |
|---|
| 自建扫描池(3台4核8G) | 约21元(主机摊销) | 31%~47% | 不可控 |
| 短效动态代理(按量) | 约240元 | 96.8% | 城市级可选 |
| 隧道代理(40并发通道) | 约640元 | 99.4% | 城市级可选 |
表面看自建便宜到离谱。我当时也上头了,花了三周写扫描器、验活脚本、健康检查,甚至给IP打了地域标签。结果呢?可用率连50%都摸不到,扫回来的免费IP大半在十分钟内就死了。
短效动态的单价优势很明显,市面上按量计费的区间在0.0022到0.006元/IP,取决于你要不要指定城市。隧道贵三倍,但它是长连接,省掉了反复提取和验活的环节。
隐性成本才是真正吞钱的地方
显性成本好算,隐性成本才是这行的坑。我按两周的实际记录做了张表,把三类成本量化出来:
- 运维工时:自建方案平均每周11小时(扫IP、修验活逻辑、处理误杀),按内部人力成本折算约6600元/月;短效动态每周2小时;隧道几乎为零。
- 地域错配返工:自建方案错配率19%,短效动态4.2%,隧道7.8%——隧道因为通道复用,IP在通道内轮换,城市漂移反而更隐蔽,这点我一开始完全没想到。
- 封禁导致的重复请求:自建方案有38%的请求是重试产生的无效流量,等于花钱买了个空转。
把这些加进去重算,自建方案的真实月成本逼近8000元,短效动态约7900元,隧道约21000元。数字一下子反过来了:最便宜的那档,隐性成本把显性优势全吃了。
这里插一句踩坑经验:如果你要做地域敏感的业务,务必在请求头里带上目标城市的标识,再让服务端在响应里回显出口IP的归属地,两头对账。我们没做这一步之前,错配数据在库里躺了整整两个月才被发现。
混合路由:我们最终落地的方案
纯隧道太贵,纯短效在高峰时段会被API提取的QPS上限卡住——这是同类文章很少提的一个隐藏参数,提取接口通常有每秒请求数限制,我们那次在晚8点的高峰被限流,直接导致批处理排队。
最后采用的是权重混合:60%流量走短效动态,40%走隧道,按任务类型分流——历史价格回溯用隧道(长会话稳定),实时竞价比价用短效(地域精确)。用httpx接入SOCKS5大致是这样:
- 安装依赖:
pip install "httpx[socks]",httpx原生支持socks5,不用额外挂PySocks。 - 为每类任务建独立连接池,隧道池设max_connections=200,短效池设120,避免共享池互相拖累。
- 在transport层传入
proxy="socks5://user:pwd@gateway:1080",账密认证比IP白名单更稳,动态出口加白根本来不及。 - 加一层熔断:单通道连续5次超时就摘除,60秒后半开重试。
跑了两周,超时率从18%降到1.2%,单次比价成本从0.0031元压到0.0019元。后来我们又在备用通道上接了一家服务商做灾备,mayihttp.com的隧道按天计费,16元/天起,正好适合做这种低频兜底,平时不烧钱,主通道抖动时接得住。
结论不绕弯:日请求量50万以下、地域要求不严的,直接上隧道,别自建;像我们这种量级又卡城市的,混合路由是当前性价比最高的解。自建那套东西,除非你有专职的人盯,否则别碰——这个坑我踩了三次,不想再踩第四次。