Python处理代理IP配置的JSON实战技巧
在处理网络请求时,配置代理IP是常见需求。天启代理提供的API接口返回标准JSON格式数据,我们可以用Python快速解析这些信息。以下这段代码演示了如何获取代理IP配置:
import requests
import json
def get_proxy_config():
api_url = "https://api.tianqidaili.com/get-config"
response = requests.get(api_url)
config = json.loads(response.text)
return {
"http": f"http://{config['ip']}:{config['port']}",
"https": f"http://{config['ip']}:{config['port']}"
}
这个函数通过天启代理的API获取最新配置,自动生成适用于requests库的代理字典。注意天启代理支持HTTP/HTTPS双协议,因此在配置时需要同时指定两种协议。
代理IP质量检测中的JSON处理
验证代理IP可用性时,返回结果通常包含多个字段。我们设计了一个带质量评估的检测函数:
def check_proxy_quality(proxy):
test_url = "https://api.tianqidaili.com/check"
try:
start = time.time()
resp = requests.get(test_url, proxies=proxy, timeout=5)
result = json.loads(resp.text)
return {
"status": result["code"] == 200,
"delay": round((time.time() - start)1000),
"protocol": result["supported_protocols"],
"location": result["node_location"]
}
except Exception as e:
print(f"检测失败:{str(e)}")
return {"status": False}
这个检测器可以获取响应延迟、支持协议、节点位置等关键信息。天启代理的节点覆盖全国200+城市,通过location字段可精准选择目标区域节点。
代理IP池的JSON数据管理
维护代理IP池时,推荐使用JSON文件存储节点信息:
{
"proxies": [
{
"ip": "122.123.124.125",
"port": 8080,
"protocol": "https",
"expire_time": "2024-08-01 12:00:00",
"location": "上海市"
},
{
"ip": "122.123.124.126",
"port": 8888,
"protocol": "socks5",
"expire_time": "2024-08-01 12:00:00",
"location": "北京市"
}
]
}
使用json模块的dump和load方法可实现数据持久化。天启代理的IP可用率≥99%,建议每小时更新一次IP池数据。
常见问题解答
问题 | 解决方案 |
---|---|
JSON解析出现编码错误 | 添加ensure_ascii=False参数,或指定response.encoding='utf-8' |
代理IP验证失败 | 检查协议是否匹配,天启代理支持HTTP/HTTPS/SOCKS5三种协议 |
如何选择最优节点 | 结合delay字段和location字段进行智能筛选 |
实战:构建智能代理调度系统
结合天启代理的优质IP资源,我们可以创建智能调度模块:
class ProxyManager:
def __init__(self):
self.proxy_pool = []
self.load_proxies()
def load_proxies(self):
with open("proxy_pool.json") as f:
data = json.load(f)
self.proxy_pool = data["proxies"]
def get_best_proxy(self):
return sorted(
[p for p in self.proxy_pool if p["status"]],
key=lambda x: (x["delay"], x["expire_time"])
)[:3]
该调度器会根据延迟时间和有效期自动选择最优的三个代理IP。天启代理的响应延迟≤10毫秒,配合此算法可最大化利用优质IP资源。