
手把手教你把代理IP塞进Python脚本
玩爬虫的老铁们肯定都遇到过IP被封的糟心事,这里教你们用ipipgo家的代理IP服务直接对接API。先整明白他们的接口返回的JSON长啥样,咱们拿到的数据通常长这样:
{
"code": 0,
"data": [
{"ip": "112.95.82.33", "port": 8000, "expire_time": "2024-03-20 12:00:00"},
{"ip": "183.6.102.156", "port": 8080, "expire_time": "2024-03-20 12:30:00"}
]
}
看见没?code=0表示成功,data里塞着能用的代理IP。咱得先用requests库把接口数据扒拉下来,记得把your_api_key换成ipipgo后台给的密钥。
JSON数据怎么拆包最省事
拿到数据别急着用,先得验货。很多新手栽在没做状态码检查这个坑里。看这段代码:
import requests
import json
resp = requests.get('https://api.ipipgo.com/proxy?key=your_api_key')
if resp.status_code == 200:
result = json.loads(resp.text)
if result['code'] == 0:
proxies = [f"{item['ip']}:{item['port']}" for item in result['data']]
print("抓到有效IP:", proxies)
else:
print("接口报错:", result.get('msg'))
else:
print("网络请求扑街,状态码:", resp.status_code)
重点来了:先查HTTP状态码再查业务状态码,双重保险。ipipgo的IP有效期通常30分钟,记得及时更换。
代理IP怎么喂给爬虫
这里有个骚操作——动态代理池。把获取的代理IP存到列表里循环使用,比单IP稳多了:
from itertools import cycle
def get_proxy_pool():
这里调用ipipgo的API
return proxies
proxy_pool = cycle(get_proxy_pool())
用的时候这么取
current_proxy = next(proxy_pool)
requests.get(url, proxies={"http": current_proxy, "https": current_proxy})
记得加个异常处理,遇到失效IP自动切换。ipipgo的IP存活率能到95%以上,比那些免费代理靠谱多了。
常见翻车现场急救指南
Q:老是报SSL错误咋整?
A:八成是代理协议没配对,https链接得用https代理,别搞混协议类型。检查ipipgo后台的协议设置
Q:返回的JSON解析失败?
A:八成是编码问题,试试resp.content.decode(‘utf-8’)硬解码。ipipgo的接口返回都是标准UTF-8
Q:代理IP刚拿到就用不了?
A:检查本地网络防火,或者换个ipipgo的机房节点。他们家江苏机房对国内线路特别友好
为啥推荐ipipgo?
咱们对比下市场主流服务商:
| 功能 | ipipgo | 其他家 |
|---|---|---|
| 响应速度 | 800ms内 | 1.5s以上 |
| IP存活率 | 95%+ | 70%左右 |
| 计费方式 | 按用量 | 包月限流 |
最关键的是他们家提供全国独一份的IP质量检测工具,拿到代理IP先测再用的功能真心省事。现在注册还送10G流量包,够测试用了。
最后唠叨句,处理JSON数据时记得用json.dumps()做格式化输出,调试的时候能省不少眼药水。代码里多塞几个try-except块,保准你的脚本比别人的长寿。

