所有分类
  • 所有分类
  • 攻略

长效IP到期提醒脚本,代理IP自动切换最佳实践Python代码仓库

长效IP到期提醒脚本+代理IP自动切换最佳实践,Python代码仓库直接抄作业

为什么你的爬虫总在凌晨翻车?

90%的断网事故不是被封,而是长效代理ip忘了续费。手动记到期?Excel?闹钟?全不靠谱。写个20行的Python脚本,让它每天9点准时在企业微信、钉钉、邮箱三连吼,IP到期前7天、3天、1天各提醒一次,再也不做“救火队员”。

核心思路:把“到期时间”当倒计时

代理服务商的API基本都返回expire_time,用requests拉一次,转成时间戳,再减当前时间,得到剩余秒数。小于604800(7天)就触发告警。脚本挂到云函数,每天跑一次,腾讯云SCF、阿里云FC、GitHub Actions任选,0元搞定。

三行代码拿到剩余时长

import requests, time, datetime
expire = requests.get('https://api.xxx.com/ip/list?key=你的Key').json()['data'][0]['expire_time']
left = (datetime.datetime.strptime(expire, '%Y-%m-%d %H:%M:%S') - datetime.datetime.now()).total_seconds()

告警通道这样配最稳

企业微信机器人最简单,URL丢进去就完事;钉钉加签把timestamp+secret拼一下;邮件用yagmail两行搞定。三通道都写,防止单点失败。消息模板别花哨,直接写“IP 123.123.123.123 剩余43小时过期,续费地址→https://xxx.com/renew”,老板也能看懂。

自动切换:让脚本自己换IP

提醒只是第一步,真到期还得切IP。把“获取新IP→测试可用→替换环境变量→重启爬虫”做成一个函数。服务商如果支持“替换式”API,直接调一次旧IP就被新IP顶掉,不用改本地配置;不支持就本地换白名单,再重启Scrapy/Selenium。整个流程控制在30秒内,爬虫无感。

白名单自动更新脚本

import re, subprocess, os
new_ip = requests.get(api).json()['new_ip']
subprocess.run(f'curl -s "https://api.xxx.com/white_switch?ip={new_ip}&key={key}"', shell=True)
os.environ['PROXY'] = f'http://{new_ip}:8888'

把旧IP写进regex,正则一键替换config.py、yaml、json里所有出现的位置,再touch一下supervisor,爬虫进程热加载,连Docker都不用重启。

代码仓库结构直接搬

GitHub搜“long-ip-monitor”就能找到我开源的模板,目录只有5个文件:check.py、switch.py、notify.py、config.yaml、requirements.txt。改完配置一键push,Actions每天08:55定时跑,告警+切换全帮你做好。Star过500,Issues里已踩完所有坑,抄作业就行。

避坑指南

  1. 时间字段一定用UTC+8,夏令时坑过一次。
  2. 部分厂商“到期”≠“立刻断网”,会留2小时缓冲,脚本里把阈值设成expire-7200更精准。
  3. 免费邮箱容易进垃圾箱,标题加“【告警】”提高到达率。
  4. 多线程爬虫切换IP要加锁,防止并发把白名单刷爆。
  5. 别把Key写死在代码,用GitHub Secret+环境变量,安全分拉满。

进阶玩法

把剩余时长画成折线,推到Grafana,老板看见曲线下降就批预算;再接入Prometheus告警规则,剩余<24小时直接@财务,续费流程从“人找钱”变“钱等人”。如果你用Kubernetes,把代理池做成CRD,到期自动删Pod,新IP秒级上线,真·无人值守。

一句话总结

写个提醒+切换脚本,比买高可用IP池便宜十倍,把“忘记续费”这种低级错误从字典里删掉,爬虫稳到过年。

采购代理IP请添加微信客户经理:x31471626

阅读全文
原文链接:https://sk5ip.com.cn/hangyezixun/changxiaoipdaoqitixingjuebenda/,转载请注明出处~~~
0
分享海报

评论0

请先
显示验证码

社交账号快速登录

微信扫一扫关注
如已关注,请回复“登录”二字获取验证码