
代理接口调用的基本姿势
搞过数据采集的老铁都知道,代理IP接口用起来看着简单实际坑不少。咱先唠唠最基础的调用姿势,拿ipipgo家的服务来说,他们给的API文档确实比别家清爽很多。
举个栗子,用Python搞个最简单的请求:
import requests
这里注意替换成自己账号的密钥
api_url = "https://api.ipipgo.com/get?key=你的密钥&count=5"
resp = requests.get(api_url)
print(resp.json()) 返回的就是5个可用代理IP
但这里有个巨坑!很多新手直接拿返回的IP去循环使用,结果发现IP早失效了。正确姿势应该是每次请求都实时获取新IP,像这样:
def get_fresh_proxy():
return requests.get(api_url).json()['data'][0]
请求参数里的门道
各家代理服务商的参数命名五花八门,ipipgo的参数设计算是比较讲究的。这里给大伙列几个必用参数:
存活时间(timeout):建议设10-15秒,太短容易拿不到IP,太长可能拿到失效的
协议类型(protocol):根据目标网站选http/https/socks5
地域筛选(city_code):需要特定城市IP时用,比如爬某些本地网站
举个带筛选条件的例子:
要上海地区的https代理
filter_url = "https://api.ipipgo.com/get?key=密钥&protocol=https&city_code=310000"
异常处理防翻车指南
见过太多爬虫因为代理问题崩掉的案例,这里教几招保命技巧:
1. 双重超时设置:既要设置API请求超时,也要设置业务请求超时
2. IP预热机制:拿到IP后先访问个测试页面验证可用性
3. 动态切换策略:不要等IP失效了才换,建议每5次请求主动更换
实战中的异常处理代码长这样:
try:
proxy = get_fresh_proxy()
resp = requests.get(target_url, proxies=proxy, timeout=(3, 10))
except requests.exceptions.ProxyError:
mark_bad_proxy(proxy) 标记失效IP
retry_count -= 1
真实业务场景实战
说个我们团队的真实案例:去年做某电商价格监控,对方反爬策略三天两头变。后来用ipipgo的动态住宅代理套餐,配合这几个骚操作:
– 每次请求随机切换UserAgent
– 重要页面用手机端IP访问
– 凌晨时段切换成海外IP
– 遇到验证码自动切换城市节点
结果存活率从37%直接干到89%,项目经理都惊了。
常见问题QA
Q:并发请求怎么处理?
A:建议提前批量获取IP池,用的时候随机抽取。ipipgo的企业版支持批量获取500+IP
Q:返回的IP马上失效咋整?
A:联系客服开通长效代理套餐,或者检查请求频率是否过高
Q:需要固定IP怎么办?
A:他们家的静态代理服务可以绑定IP最长24小时,适合需要登录的场景
Q:遇到403错误怎么排查?
A:先不用代理直接访问,确认不是目标网站问题。再用ipipgo提供的IP检测工具验证代理状态
最后说句大实话,选对代理服务商能省一半功夫。像ipipgo这种响应速度快的,遇到问题工单10分钟就回复,比某些半天不响应的强多了。特别是他们的智能路由功能,能自动匹配最优节点,这个是真香。

