爬虫动态IP代理设置教程:Python+Scrapy+代理池实战,轻松绕过反爬
搞爬虫最怕啥?IP被封!今天这篇“爬虫动态ip代理设置教程”直接给你一套能跑起来的方案,关键词先摆这儿:Python爬虫动态代理ip、Scrapy代理中间件、高匿代理池、ADSL拨号代理、隧道代理转发、免费代理IP测试、代理失效自动切换。看完就能用,不废话。
一、先选代理:免费≠能用,稳定才是爹
- 免费代理站(西刺、快代理)抓下来的90%连不上,别心疼钱,直接买高匿动态代理,接口返回格式一般是
http://用户名:密码@网关IP:端口
,支持每次请求自动换IP。 - 想再省,用ADSL拨号 VPS,自己写脚本每拨一次就把新IP推到Redis,做成“自维护代理池”,成本最低,单IP寿命3–5分钟,适合日采十万级以下。
二、Scrapy接入动态代理,三步完事
- 装库:
pip install scrapy-rotating-proxies
-
settings.py 里加两行:
ROTATING_PROXY_LIST = [ 'http://用户名:密码@gate.xxx.com:8080', 'http://用户名:密码@gate.xxx.com:8080' ] DOWNLOADER_MIDDLEWARES = { 'rotating_proxies.middlewares.RotatingProxyMiddleware': 610 }
- 把
RETRY_TIMES
调到5,失败自动踢掉,IP池永远在线。
三、Requests 轻量脚本也能秒切IP
不想上框架?十行代码搞定:
import requests, random
api = 'http://api.xxx.com/get?num=1'
proxy = requests.get(api).json()['proxy']
proxies = {'http': f'http://{proxy}', 'https': f'http://{proxy}'}
r = requests.get('https://httpbin.org/ip', proxies=proxies, timeout=6)
print(r.json())
把这段循环+异常捕获,IP失效立刻重新拿,稳得一批。
四、代理池去重+评分,别让烂IP拖慢速度
自建池子用Redis,key 存proxy:ip:port
,value 存“最近失败次数+响应时间”,每次弹出分数最高的;失败+1,成功-1,低于阈值直接删除。这样代理池越跑越干净,爬虫速度嗖嗖的。
五、 headers 别裸奔,浏览器特征要补齐
很多小伙伴换了IP还是403,因为UA、Sec-Fetch-*、Accept-Language 都是默认。把fake-useragent
装上,再在中间件里随机挑:
request.headers['User-Agent'] = UserAgent().random
IP+头部双伪装,反爬系统直接蒙圈。
六、常见坑排雷
- HTTPS 证书校验关不掉?
verify=False
记得加,不然代理隧道会报错。 - 代理返回 407?账号密码错了或白名单没绑本机外网IP。
- 并发太高被限制?买套餐时选“并发数”而不是“IP数量”,动态池一般支持200+线程。
七、监控报警,别让程序裸奔
日志里一旦出现“Max retries exceeded”连续飙红,立刻钉钉/飞书 webhook 推送,IP池空了也能第一时间补货,别让服务器跑空窗。
八、一键 Docker 化,部署不踩坑
GitHub 搜“proxy_pool”镜像,docker-compose 里把 Redis+代理池+WebUI 拉起来,五分钟完事;再用定时任务每10分钟调一次proxy_valid.py
,保证池子永远新鲜。
照着上面做,日采百万数据不封IP不是梦。关键词再刷一遍:Python 动态代理IP设置、Scrapy 代理中间件实战、隧道代理转发、代理池自动去重、高匿代理购买。
采购代理IP请添加微信客户经理:x31471626
阅读全文
原文链接:https://sk5ip.com.cn/hangyezixun/pachongdongtaiipdailishezhijia/,转载请注明出处~~~
评论0