动态代理ip秒级切换,副业爬虫任务异常自愈代码示例
——写给半夜还在跑爬虫的你
一、为什么副业爬虫必须“秒切”代理IP
副业爬虫最怕两件事:封号+断流。平台风控升级后,单IP请求超过60次/分钟就直接403,第二天还给你弹验证码。想靠免费代理池?延迟3秒起步,断连率50%,跑一夜数据醒来发现Excel里全是空行。秒级切换=把封禁风险拆成无数1秒的小块,平台还没反应过来,你的程序已经换完身份继续薅。
二、秒切不是玄学,是“提前预热”
很多人把切换逻辑写在except里,等被封才换IP,黄花菜都凉。正确姿势是:并发前5秒就把下一条代理备好,本地维护一个LIFO栈,栈里永远保持≥3个已测延迟<200ms的IP。请求返回200就pop,返回非200立刻丢弃并补新,做到“无感知换挡”。
三、异常自愈三板斧:重试、降速、换出口
1.重试:requests+urllib3默认3次不够,自己写Retry(total=5, backoff_factor=0.3, status_forcelist=[403, 429, 502])。
2.降速:动态限流器,根据近30次响应码比例自动调整delay,403>10%就把delay*=1.5,降到0.5秒保底。
3.换出口:一旦连续两次出现“代理无响应”,立即标记整段IP段为“污染”,从API重新拉取新段,防止“同机房连坐”。
四、30行代码把上面全串起来
import requests, time, random, logging
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
API = "https://你的供应商.com/get?num=5&delay=1"
PROXY_STACK = []
def refresh_stack():
global PROXY_STACK
PROXY_STACK = [f"http://{p}" for p in requests.get(API).json().get("proxy", [])]
logging.info("栈已补满:%s", len(PROXY_STACK))
def get_proxy():
if not PROXY_STACK: refresh_stack()
return PROXY_STACK.pop()
session = requests.Session()
retry = Retry(total=5, backoff_factor=0.3, status_forcelist=[403, 429, 502])
session.mount('http://', HTTPAdapter(max_retries=retry))
session.mount('https://', HTTPAdapter(max_retries=retry))
def safe_get(url, timeout=8):
while True:
proxy = get_proxy()
try:
r = session.get(url, proxies={"http": proxy, "https": proxy}, timeout=timeout)
if r.status_code == 200: return r.text
except Exception as e:
logging.warning("丢弃代理 %s : %s", proxy, e)
time.sleep(random.uniform(0.2, 0.5))
# 业务侧直接调用 safe_get("目标页") 即可,异常自愈全部黑盒。
跑在树莓派上,一夜薅完2000条商品信息,零封号。
五、副业党最关注的成本
秒切代理听着贵,其实按量计费最香:1万次请求≈0.4元,跑一个月副业单子也就一杯奶茶钱。比买云主机、挨封号、重新注册账号划算太多。记住选“住宅动态”标签,别贪“机房IP”,前者封禁率<1%,后者一抓一个准。
六、常见坑Top3
1.HTTPS证书校验关不掉→目标站反爬直接返回空200,浪费额度。
2.代理带“X-Forwarded-For”头→部分站点会读取并封真实出口,务必让供应商关闭头部透传。
3.本地DNS缓存→切了IP却解析到旧CDN节点,返回“请求频繁”,在代码里加requests.get(url, headers={‘Cache-Control’:’no-cache’}, proxies=…)强制刷新。
七、把代码变成睡后收入
把safe_get封装成API,接个Flask,丢到阿里云函数计算,按量付费0元起步。前端卖数据给做电商运营的小伙伴,9.9元/千条,每晚自动发邮件交付,一个月躺赚两三千,代理成本不到5%。技术栈简单,出问题就回滚代码,异常自愈帮你兜底,真正“睡后收入”。
采购代理IP请添加微信客户经理:x31471626
评论0