长效ip续费提醒脚本,代理ip到期前自动切换最佳实践——别让IP掉链子,脚本替你盯梢
【为什么你的代理IP总在半夜掉线?】
做爬虫、跑账号、刷数据,最怕凌晨三点微信被老板@:“IP全红了,业务停了!” 代理IP到期不提醒,就像牛奶过期才想起喝,一口下去全是“404”。手动记到期日?Excel 100 行,眼睛看花也看错。今天把我自己用了两年的“续命脚本”掏出来,Python 不到 80 行,挂树莓派上,比闹钟还准时,代理IP到期前 3 天自动发飞书+邮件+微信,还能顺手把新IP切上去,真正做到“旧IP退休,新IP无缝上岗”,老板睡到天亮都不知道发生过切换。
【脚本核心思路:把到期时间转成时间戳,倒计时】
别被“长效IP”“静态住宅IP”这些黑话吓到,说白了供应商给的 API 返回里一定有 expire_time 字段。用 requests 轮询一遍,把到期时间 strptime 成时间戳,跟当前时间做减法,小于 259200 秒(3 天)就触发提醒。提醒通道我搞了三套:
1 飞书群机器人,markdown 红色加粗,@全员;
2 邮件,顺带把新 IP 列表当 CSV 附件扔进去,运维哥哥直接导入防火墙;
3 微信,用企业微信 API,文案里带“业务 IP 将于 72h 后失效,已自动替换为:xxx.xxx.xxx.xxx”,老板手机一震,只回一句“OK”。
三套通道互做备份,哪怕飞书崩了,邮件也丢不了。
【自动切换:让新IP“热插拔”,不断流】
提醒只是半套,真正的灵魂是“无感切换”。把供应商的“动态转发端口”利用起来:
旧 IP 到期前 1 天,脚本先调用供应商的“续费”接口,拿到新 IP+端口,写入本地 config.json;
接着给本机 Squid/Clash 发 POST 请求,热更新 upstream,业务进程通过本地 7890 端口出去,外层 IP 瞬间变成新的,TCP 连接不断;
最后把旧 IP 放进“观察池”,延迟 24 h 后再调用删除接口,防止新 IP 不稳定还能秒回滚。
整个流程 5 秒搞定,爬虫队列里那只跑到 47% 的线程都不会报错。
【脚本部署:树莓派+Docker,停电也能跑】
有人爱在云函数里跑,我偏不,云函数冷启动 3 秒,万一供应商 API 超时直接崩。树莓派 4B 插个 UPS,Docker 一条命令:
docker run -d –restart=always -v /home/pi/ipmonitor:/app -e TZ=Asia/Shanghai python:3.11-alpine sh -c “pip install -r /app/requirements.txt && python /app/monitor.py”
镜像 60 M,一个月耗电 2 度,比云函数便宜多了。数据卷挂本地,换机插卡即迁,真·家有一派,如有一宝。
【避坑指南:供应商 API 限流、时区、夏令时】
1 限流:很多代理IP服务商 1 分钟只能查 10 次,脚本里加缓存,把结果写 Redis,10 分钟更新一次;
2 时区:expire_time 字段有的是 UTC,有的是 UTC+8,脚本里统一用 pytz 转本地,防止“误报提前 8 小时”;
3 夏令时:海外静态住宅 IP 常踩坑,用 datetime.astimezone() 自动算偏移,别手写+8 小时,否则每年 3 月与 11 月必翻车;
4 余额:续费接口返回“Insufficient balance”时,脚本立刻把通道切到“低权重”,别让新流量进来,老流量继续跑,给财务留 6 小时充值窗口。
【进阶玩法:多账户、多地区、按量计费也能玩】
公司 5 个部门 8 个供应商?把脚本拆成多进程,每个账户一个 goroutine,用 Prometheus exporter 吐指标,Grafana 画大盘,红色柱子就是“即将到期 IP 数量”,柱子一高,采购部自己就会去找供应商砍价。按量计费的 IP 没有固定到期日?把“每日流量小于 1 M 且持续 3 天”判定为“闲置”,自动释放,省下的钱给程序员加鸡腿。
【一句话总结】
代理IP长效续费+自动切换,其实就是“把人工盯微信”变成“脚本盯 API”,再把“重启爬虫”变成“热更新代理端口”。脚本我放 GitHub 了,搜关键词“ip-monitor-hot-swap”就能找到,拿去改两行配置就能跑。别让 IP 到期成为背锅理由,让代码替你熬夜,你好睡整觉。
采购代理IP请添加微信客户经理:x31471626
评论0