
搞爬虫被封IP怎么办?试试这个解析技巧
大伙儿做数据采集最怕啥?当然是IP被封!最近帮朋友处理个案例,他们团队用Python做竞品分析,结果连续3天被目标网站封了20多个IP。这事儿其实用代理IP就能破,关键得会处理服务商返回的JSON数据。
手把手教你解析代理IP数据
现在主流代理服务商都用JSON格式返回IP信息。假设我们从ipipgo的API拿到这样一段数据:
{
"proxy_list": [
{
"ip": "203.34.56.78",
"port": 8866,
"protocol": "socks5",
"expire_time": "2024-08-01 12:00:00"
},
//...更多IP数据
]
}
重点看这几个参数:
| 字段 | 说明 |
|---|---|
| ip | 代理服务器地址 |
| port | 连接端口号 |
| protocol | 代理协议类型 |
| expire_time | IP失效时间 |
实战代码:让代理IP真正用起来
咱们用Python的requests库演示怎么动态切换代理。注意要处理可能出现的JSONDecodeError异常:
import json
import requests
def get_proxy():
try:
resp = requests.get('https://api.ipipgo.com/get_proxy')
data = json.loads(resp.text)
current_proxy = data['proxy_list'][0]
return f"{current_proxy['protocol']}://{current_proxy['ip']}:{current_proxy['port']}"
except json.JSONDecodeError:
print("解析JSON时抽风了,检查API返回格式!")
使用示例
proxy = get_proxy()
try:
response = requests.get('https://目标网站.com',
proxies={'http': proxy, 'https': proxy},
timeout=10)
print(response.status_code)
except ConnectionError:
print("这个IP可能挂了,换一个试试?")
避开三个常见大坑
新手容易栽跟头的地方:
- 没检查IP有效期,用着用着突然断线
- 协议类型搞错(比如https网站用了socks5代理)
- 频繁调用API导致提取额度超标
为什么推荐ipipgo?
自家用过的服务商,说几个实在的优点:
- 支持动态住宅IP,7块多1G流量够小团队用
- 客户端自带自动更换IP功能,不用自己写定时任务
- 遇到验证码问题可以换TK专线(这个别家很少见)
| 套餐类型 | 适用场景 | 价格 |
|---|---|---|
| 动态住宅(标准) | 日常数据采集 | 7.67元/GB |
| 动态住宅(企业) | 高频访问需求 | 9.47元/GB |
| 静态住宅 | 长期固定业务 | 35元/IP |
疑难杂症QA
Q:返回的JSON里没有port字段怎么办?
A:八成是用了他们的客户端直连模式,这时候直接看文档用默认端口
Q:代理IP明明有效却连不上?
A:先检查协议类型,https网站必须用https或socks5代理
Q:怎么批量检测IP可用性?
A:用concurrent.futures模块开多线程,同时测试多个IP的连接速度
最后唠叨句,选代理服务别光看价格。像ipipgo这种能提供1v1定制方案的,遇到特殊需求能快速响应,这钱花得才值。上次他们给某电商客户做的IP轮换方案,直接把采集效率提升了3倍多,这就是专业服务的价值。

