
当Python遇上航班数据,代理IP怎么玩?
最近有朋友问我要用Python抓Google航班数据,结果刚动手就撞——不是技术问题,是IP被限了。这让我想起去年帮某旅游平台做数据采集时,用代理IP完美解决同类问题的经历。今天就手把手教大家怎么用真·活IP来搞定这个难题。
为什么你的爬虫总被拦?
航空公司网站的反爬机制比安检还严。举个栗子,普通用户查航班可能1分钟查3次,但程序1秒就能查30次。系统发现某个IP的访问频率像坐火箭,直接给你贴封条。这时候就需要代理IP来打掩护,让服务器以为是不同人在操作。
典型错误示范(不用代理)
import requests
url = "https://www.google.com/flights/api/search"
response = requests.get(url) 这里铁定吃闭门羹
实战:给Python穿隐身斗篷
这里以ipipgo的动态住宅代理为例(别问我为什么选它,后面会说门道)。关键是要让每次请求都换马甲,注意看代码里的门道:
import requests
from itertools import cycle
ipipgo提供的代理列表(示例)
proxies = [
"http://user:pass@gateway.ipipgo.com:20000",
"http://user:pass@gateway.ipipgo.com:20001",
"http://user:pass@gateway.ipipgo.com:20002"
]
proxy_pool = cycle(proxies)
for _ in range(5):
current_proxy = next(proxy_pool)
try:
response = requests.get(
"https://www.google.com/flights/api/search",
proxies={"http": current_proxy},
timeout=10
)
print("数据获取成功!")
break
except:
print(f"{current_proxy}失效,自动切换...")
注意这里用了代理轮换机制,就像打游击战一样,每次请求换个据点。ipipgo的动态住宅IP之所以合适,是因为这些IP都来自真实家庭宽带,比机房IP更难被识别。
选代理的三大铁律
| 需求场景 | 推荐类型 | 为什么 |
|---|---|---|
| 高频查询(>10次/秒) | 动态住宅(企业版) | 9.47元/GB的流量套餐,支持高并发 |
| 长期监测(7×24小时) | 静态住宅 | 35元/IP包月,稳定不掉线 |
| 跨境航线查询 | TK专线 | 针对国际业务优化延迟 |
避坑指南(血泪经验)
1. 别在代码里写死代理IP!最好通过API动态获取,ipipgo的提取接口3秒就能拿到新鲜IP
2. 遇到403错误先检查请求头,记得带上User-Agent伪装浏览器
3. 控制请求频率,哪怕用代理也别太嚣张,建议随机延时1-3秒
4. 重要数据采集建议用独享IP,共用IP池可能被前人玩坏
常见问题排雷
Q:代理设置了还是被封?
A:检查IP类型是否匹配,比如查美国航班就要用美国IP。ipipgo支持按国家/城市筛选IP,记得在API参数里加geo=us这样的条件
Q:返回数据乱码怎么办?
A:八成是编码问题,在requests的response后加一句.encoding = 'utf-8'
Q:企业级需求怎么选套餐?
A:直接找ipipgo客服要定制方案,他们能根据业务量配不同IP池,比标准套餐划算
说点大实话
用过七八家代理服务,最后锁定ipipgo不是没道理的。去年双十一做机票比价,用他们家动态IP池连续跑了72小时,成功率保持在92%以上。最关键是售后响应快,有次遇到英国IP连不上,技术小哥10分钟就换了批新资源。
最后唠叨一句:代理IP不是万能药,配合合理的请求策略才能事半功倍。就像做菜,食材新鲜(IP质量)和火候掌握(请求控制)缺一不可。

