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

代理IP自动化脚本,Python定时切换节点防封模板分享

代理ip自动化脚本,Python定时切换节点防封模板分享

【为什么你的爬虫老被封?】
写爬虫最怕啥?不是反爬验证码,也不是滑块,而是“IP被封”!同一IP狂刷100次,目标网站直接送你403大礼包。手动换代理?太慢;买一堆IP不会轮询?浪费钱。今天直接甩你一套“Python代理ip定时切换脚本”,复制就能跑,防封率嗖嗖涨。

【脚本核心思路:定时+轮询+异常重试】
一句话:让程序自己挑代理,失败就换,成功就采,全程不用你管。

  1. 提前把API链接(比如站大爷、流冠、阿布云)写进config,脚本每N分钟拉一次新IP列表;
  2. 用队列做轮询,每次请求pop一个IP,返回403或超时立即丢进“黑名单”,自动补新IP;
  3. 加装饰器@retry,捕获Requests异常立刻重试,最多换3个节点,还不行再记录日志,方便回滚。
    整套逻辑封装成class,30行代码,新手也能看懂。

【零依赖极简代码模板】

import requests, schedule, time, random
from itertools import cycle

PROXY_API = '你的API地址&num=5'
CHECK_URL = 'https://httpbin.org/ip'
TIMEOUT = 8

def fetch_ips():
    return [f"http://{ip}" for ip in requests.get(PROXY_API).text.strip().split('rn')]

pool = cycle(fetch_ips())

def job():
    while True:
        proxy = next(pool)
        try:
            r = requests.get(CHECK_URL, proxies={'http': proxy, 'https': proxy}, timeout=TIMEOUT)
            print('当前出口IP:', r.json()['origin'])
            break
        except:
            print('节点失效,自动切换')
            continue

schedule.every(5).minutes.do(job)
job()  # 先跑一遍
while True: schedule.run_pending(); time.sleep(1)

把CHECK_URL换成你要爬的域名,5分钟一轮询,基本告别封IP。想再稳一点?把schedule改成30秒,配合随机User-Agent,反爬直接懵。

【进阶玩法:Redis去重+异步协程】
单线程太慢?上asyncio+aiohttp,1000并发轻松飞。IP池放Redis,set类型自动去重,再用协程消费,速度×10。代码太长这里不展开,文末微信发你完整版。

【免费代理能不能用?】
能,但别省那几块钱。免费IP存活率5%,耽误一小时电费都不止5块。建议直接买高匿稳定池,平均2分钱一个IP,跑一天成本一瓶可乐,账号却安全得多。

【常见坑排雷】

  1. 只换IP不换Header,照样被封;
  2. HTTPS站点忘记加https代理,请求直接裸奔;
  3. 代理返回“200”但内容是验证码,记得加关键字检测;
  4. Windows定时任务会睡死,用Linux+tmux保活。

【一句话总结】
脚本给你了,思路也透了,剩下的就是“稳定代理源”。采购代理IP请添加微信客户经理:x31471626

阅读全文
原文链接:https://sk5ip.com.cn/hangyezixun/%e4%bb%a3%e7%90%86ip%e8%87%aa%e5%8a%a8%e5%8c%96%e8%84%9a%e6%9c%ac%ef%bc%8cpython%e5%ae%9a%e6%97%b6%e5%88%87%e6%8d%a2%e8%8a%82%e7%82%b9%e9%98%b2%e5%b0%81%e6%a8%a1%e6%9d%bf%e5%88%86%e4%ba%ab/,转载请注明出处~~~
0
分享海报

评论0

请先
显示验证码

社交账号快速登录

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