
一、代理IP在爬虫中的实战妙招
很多兄弟在用Requests做数据采集时,经常遇到IP被封的尴尬。这时候就该代理IP上场了!这里教大家一个绝活:动态切换代理池。就像打游戏换皮肤防被狙,咱们每次请求都换个新IP。举个真实案例:某电商平台每30次请求封IP,用ipipgo的轮换代理后,连续采集3小时都没触发封禁。
代码这么写就对了(注意看代理设置部分):
import requests
from itertools import cycle
proxy_pool = cycle(ipipgo.get_proxies()) 这里调用ipipgo的API获取代理池
for page in range(1,100):
proxy = next(proxy_pool)
try:
response = requests.get(
'https://目标网站',
proxies={"http": proxy, "https": proxy},
timeout=10
)
print(f"第{page}页采集成功,使用代理:{proxy}")
except:
print("当前代理失效,自动切换下一个")
二、突破反爬验证的黄金组合
现在很多网站不仅封IP,还会搞人机验证。这时候需要代理IP配合请求头伪装。记住三个要点:
| 要素 | 推荐配置 |
|---|---|
| User-Agent | 随机生成主流浏览器标识 |
| 请求间隔 | 3-8秒随机延迟 |
| 代理类型 | ipipgo的高匿住宅代理 |
特别提醒:别用透明代理!有些网站能检测到真实IP。之前帮客户做招聘数据采集,用ipipgo的动态住宅代理配合随机UA,完美绕过某聘的验证系统。
三、API对接的正确姿势
很多新手栽在代理IP的格式处理上。以ipipgo的代理为例,他们的API返回格式是ip:port:username:password,记得要拆解使用:
proxy_str = "192.168.1.1:8000:user123:pass456"
parts = proxy_str.split(':')
formatted_proxy = f"http://{parts[2]}:{parts[3]}@{parts[0]}:{parts[1]}"
别犯低级错误!见过有人直接把用户名密码写死在代码里,结果换代理时手忙脚乱。建议把认证信息放在环境变量中,这样更安全方便。
四、异常处理大全
代理用多了总会遇到各种幺蛾子,这几个异常必须处理:
- ConnectionError:代理服务器没响应(可能是IP失效)
- Timeout:设置10秒超时比较合理
- ProxyError:认证信息错误或代理协议不匹配
推荐使用retrying模块实现自动重试:
from retrying import retry
@retry(stop_max_attempt_number=3)
def safe_request(url):
这里放带代理的请求代码
五、QA常见问题解答
Q:代理IP用着用着就失效怎么办?
A:建议使用ipipgo的动态代理服务,他们的IP存活时间智能调整,自动切换失效节点。
Q:请求速度突然变慢怎么回事?
A:可能是当前代理线路拥堵,可以尝试:
1. 切换其他地区代理
2. 联系ipipgo技术支持调整带宽
3. 检查本地网络是否正常
Q:需要采集境外网站怎么办?
A:ipipgo提供全球200+国家地区代理,记得选择对应地区的出口节点。但要注意遵守目标网站的数据采集政策。
六、压箱底的优化技巧
最后分享几个实战经验:
1. 高频请求时使用Session对象复用TCP连接
2. 设置合理的max_retries参数
3. 定期清理DNS缓存(这个坑我踩过)
4. 重要项目建议购买ipipgo的独享代理套餐,稳定性提升60%以上
记住,代理IP不是万能药,要配合规范的爬虫策略。上次有个客户不听劝,用着ipipgo的优质代理却每秒发20次请求,结果还是被封了。合理控制频率才是王道!

