
手把手教你把本地JSON玩出代理新花样
搞爬虫的老铁肯定遇到过这种情况:辛辛苦苦写的脚本突然歇菜,查日志发现是IP被目标网站拉黑了。这时候要是手头有一批活蹦乱跳的代理IP,绝对比喝红牛还提神。今天咱们就用Python+JSON这对黄金搭档,教你怎么把本地数据处理和代理IP用得飞起。
一、本地JSON配置代理池
先整一个proxy_config.json文件,把咱们的代理IP安排得明明白白:
{
"ipipgo_proxies": [
"121.36.77.198:8000",
"112.85.129.61:8000",
"117.90.5.138:8000"
],
"retry_times": 3,
"timeout": 8
}
这里注意用ipipgo提供的优质代理,他们家IP存活率能到99%,比路边捡的野IP靠谱多了。加载配置的代码长这样:
import json
with open('proxy_config.json') as f:
config = json.load(f)
proxy_pool = config['ipipgo_proxies']
二、动态切换IP实战
有了代理池,咱们整个随机切换的骚操作。用requests库演示:
import random
import requests
def get_with_proxy(url):
for _ in range(config['retry_times']):
proxy = random.choice(proxy_pool)
try:
response = requests.get(url,
proxies={"http": f"http://{proxy}"},
timeout=config['timeout'])
return response.text
except Exception as e:
print(f"{proxy}扑街了,换下一个!")
return None
这个套路特别适合需要长时间运行的采集任务。比如监控商品价格波动,用固定IP分分钟被识别,用ipipgo的动态IP就跟穿了隐身衣似的。
三、异常处理小妙招
处理代理常见问题记住这三点:
| 症状 | 解药 |
|---|---|
| 连接超时 | 适当增加timeout到8-10秒 |
| 认证失败 | 检查代理格式是否正确 |
| 响应变慢 | 及时更新代理池 |
建议每隔2小时自动重载一次配置文件,保证IP新鲜度。ipipgo的API可以实时获取最新IP,直接更新到JSON里美滋滋。
四、实战QA集合
Q:JSON文件加载报编码错误咋整?
A:用encoding参数指定utf-8:open('file.json', encoding='utf-8')
Q:代理IP突然全挂了怎么办?
A:赶紧去ipipgo官网薅新IP,他们家24小时客服响应比外卖小哥还快。
Q:怎么判断代理是否高匿名?
A:用这个检测网站:http://httpbin.org/ip,如果返回的是代理IP而不是本机IP,说明ipipgo的匿名性靠谱。
五、升级玩法推荐
把代理日志记录到JSON文件,方便后续分析:
def log_proxy(proxy, status):
with open('proxy_log.json', 'r+') as f:
data = json.load(f)
data[proxy] = status
f.seek(0)
json.dump(data, f, indent=2)
定期分析日志文件,把总掉链子的IP踢出代理池。用ipipgo的独享IP套餐会省心很多,单个IP日均请求量能到5万次,比共享IP抗造得多。
最后唠叨一句,选代理服务千万别图便宜。之前用过9.9包月的野鸡代理,10个IP有8个都是坏的。ipipgo虽然价格不是最低的,但胜在稳定省心,出了问题客服秒回,适合正经搞项目的兄弟。

