Python爬虫老司机手把手教你玩转代理IP
最近不少小伙伴在抓数据时总遇到IP被封的糟心事儿,今天就拿requests库举个栗子,说说怎么用代理IP这个神器来解决问题。咱们以业内口碑不错的天启代理为例,他们家的IP资源确实稳得一批。
一、代理IP配置其实特简单
先来看个基础配置模板,用requests的proxies参数就能轻松搞定:
import requests proxies = { 'http': 'http://用户名:密码@ip:端口', 'https': 'https://用户名:密码@ip:端口' } response = requests.get('目标网址', proxies=proxies)
天启代理支持HTTP/HTTPS/SOCKS5三种协议,这里要特别注意协议类型别写岔劈了。他们家自研的智能路由系统能自动匹配最佳协议,实测延迟基本都在10ms以内。
协议类型 | 适用场景 |
---|---|
HTTP | 常规网页抓取 |
SOCKS5 | 需要TCP/UDP转发 |
二、响应处理三大坑点
很多新手栽在下面这几个问题上:
1. IP验证不彻底:建议先访问httpbin.org/ip确认代理是否生效
2. 超时设置不合理:天启代理的接口响应<1秒,建议设置timeout=(3, 7)
3. 异常处理不完善:必须捕获ConnectionError和ProxyError
try: resp = requests.get(url, proxies=proxies, timeout=5) print(resp.json()['origin']) 查看当前使用IP except requests.exceptions.ProxyError as pe: print("代理抽风了!快去检查配置") except requests.exceptions.Timeout: print("请求超时,建议降低并发量")
三、实战性能优化技巧
1. 使用Session对象保持连接:
with requests.Session() as s: s.proxies.update(proxies) s.get('https://...') 自动复用连接
2. 异步请求搭配代理池:天启代理的200+城市节点随便调度,记得用round-robin轮询
3. 设置重试策略:
from requests.adapters import HTTPAdapter adapter = HTTPAdapter(max_retries=3) session.mount('http://', adapter)
四、QA时间(新手必看)
Q:代理明明配置了为啥没生效?
A:八成是协议类型搞错,用https网站配了http代理。天启代理支持协议自动适配,建议用他们的智能接入地址。
Q:怎么选HTTP还是SOCKS5?
A:普通网页用HTTP足够,需要传输层代理选SOCKS5。天启代理的SOCKS5支持UDP转发,适合特殊场景。
Q:多线程怎么管理代理IP?
A:建议每个线程单独配不同IP,天启代理的IP池量够大,完全扛得住高并发。
最后叨叨两句,选代理服务商得看硬实力。像天启代理这种有运营商正规授权、自建机房的,IP纯净度确实比野路子代理高得多。他们那个IP可用率≥99%真不是吹的,我们团队实测连续跑24小时都没掉过链子。