天启代理API接口是什么?为什么用Python调用?
天启HTTP是国内专业的代理IP服务商,为用户提供高匿名、高可用的国内代理IP资源。用户登录天启HTTP官网控制台后,可以在"API提取"页面获取一个专属的API链接。请求这个链接,服务器就会返回一批可用的代理IP地址,格式通常是 IP:端口 或者 JSON 数据。
用 Python 调用这个 API 接口有几个明显优势:Python 的 requests 库语法简洁、社区生态成熟;搭配 try/except 可以轻松实现异常捕获和自动重试;配合多线程或异步可以高效调度大量代理IP。无论是做数据采集、SEO监控,还是自动化测试,Python + 天启代理都是一套非常顺手的组合。
调用前的准备工作
在写代码之前,需要先完成三件事:
1. 注册并登录天启HTTP官网,在用户中心开通代理套餐,进入"API提取"页面。
2. 配置提取参数。页面会提供返回格式(TXT / JSON)、提取数量、数据格式等选项。建议初学者选择 JSON 格式,方便 Python 解析。
3. 复制 API 链接。页面会生成一个形如下方的链接,其中包含你的身份标识:
https://api.tianqiip.com/getip?num=5&format=json&key=你的API_KEY
另外,确保本地已安装 Python 3.7 以上版本,并安装好依赖库:
pip install requests
Python调用天启代理API的完整代码示例
下面这段代码实现了"请求API → 解析返回 → 使用代理发送业务请求"的完整流程,可以直接复制使用:
import requests
import time
# 第一步:在天启HTTP控制台获取的API链接
API_URL = "https://api.tianqiip.com/getip"
PARAMS = {
"num": 5, # 提取数量
"format": "json", # 返回格式
"key": "你的API_KEY" # 替换为你的真实Key
}
def fetch_proxy_list():
"""请求天启API,返回代理IP列表"""
resp = requests.get(API_URL, params=PARAMS, timeout=10)
resp.raise_for_status()
data = resp.json()
# 天启JSON返回格式:{"code": 0, "data": [{"ip":"1.2.3.4","port":8888}, ...]}
if data.get("code") != 0:
raise Exception(f"API返回错误: {data}")
proxy_list = [f"{item['ip']}:{item['port']}" for item in data["data"]]
print(f"本次提取到 {len(proxy_list)} 个代理IP")
return proxy_list
def use_proxy(proxy_addr, target_url):
"""使用单个代理IP访问目标网址"""
proxies = {
"http": f"http://{proxy_addr}",
"https": f"http://{proxy_addr}"
}
start = time.time()
resp = requests.get(target_url, proxies=proxies, timeout=8)
cost = round(time.time() - start, 2)
print(f"代理 {proxy_addr} 访问成功 | 状态码 {resp.status_code} | 耗时 {cost}s")
return resp
if __name__ == "__main__":
proxies = fetch_proxy_list()
target = "https://www.baidu.com" # 替换为你的目标网址
for p in proxies:
use_proxy(p, target)
运行后,你会看到每个代理IP的访问结果,包括状态码和响应耗时。这就是最基础的调用方式。
异常处理与自动重试机制
实际使用中,代理IP可能会遇到网络超时、IP失效、API限频等问题。一个稳健的脚本必须做好异常处理。下面是带重试逻辑的进阶版本:
import requests
import time
import random
API_URL = "https://api.tianqiip.com/getip"
PARAMS = {"num": 5, "format": "json", "key": "你的API_KEY"}
# 自定义异常
class ProxyError(Exception):
pass
def fetch_proxy_list_retry(max_retry=3):
"""带重试的API请求"""
for attempt in range(1, max_retry + 1):
try:
resp = requests.get(API_URL, params=PARAMS, timeout=10)
resp.raise_for_status()
data = resp.json()
if data.get("code") != 0:
raise ProxyError(f"API业务错误: {data}")
return [f"{i['ip']}:{i['port']}" for i in data["data"]]
except requests.exceptions.Timeout:
print(f"第{attempt}次请求超时,重试中...")
except requests.exceptions.ConnectionError:
print(f"第{attempt}次连接失败,重试中...")
except ProxyError as e:
print(f"第{attempt}次API异常: {e}")
except Exception as e:
print(f"第{attempt}次未知异常: {e}")
time.sleep(2 * attempt) # 退避等待
raise ProxyError("超过最大重试次数,请检查API Key或网络")
def safe_request(url, proxy_addr, max_retry=2):
"""用代理访问目标,失败自动换下一个代理"""
proxies = {"http": f"http://{proxy_addr}", "https": f"http://{proxy_addr}"}
for attempt in range(1, max_retry + 1):
try:
resp = requests.get(url, proxies=proxies, timeout=8)
if resp.status_code == 200:
return resp.text
raise ProxyError(f"状态码异常: {resp.status_code}")
except Exception as e:
print(f"代理 {proxy_addr} 第{attempt}次失败: {e}")
time.sleep(random.uniform(1, 3))
return None
if __name__ == "__main__":
proxy_pool = fetch_proxy_list_retry()
print(f"获取到代理池: {proxy_pool}")
target = "https://www.baidu.com"
for proxy in proxy_pool:
result = safe_request(target, proxy)
if result:
print(f"代理 {proxy} 抓取成功,内容长度 {len(result)}")
break
这段代码做了三件事:API请求重试、代理访问重试、失败自动切换下一个代理。把超时、连接错误、状态码异常都纳入了捕获范围,是生产环境比较稳妥的写法。
常见异常类型与应对方式
为了方便排查问题,这里整理一张对照表:
| 异常类型 | 常见原因 | 建议处理方式 |
|---|---|---|
| requests.exceptions.Timeout | 网络波动或代理响应慢 | 设置合理timeout,自动重试 |
| requests.exceptions.ProxyError | 代理IP已失效或被封 | 切换下一个代理IP |
| requests.exceptions.ConnectionError | 本地网络或DNS问题 | 检查本地网络后重试 |
| API返回 code≠0 | Key错误、提取超量、套餐到期 | 核对Key与套餐状态 |
| 目标站点返回403/412 | 代理被目标识别或风控 | 降低请求频率,更换IP |
为什么选择天启HTTP作为代理服务
在编写Python爬虫或自动化脚本时,代理服务的稳定性直接决定了脚本的可用性。天启HTTP作为国内专业代理服务商,具备以下特点:
高匿名IP池:提供真实住宅级与机房级高匿代理,目标网站无法识别真实来源,有效降低封禁概率。
API自动提取:支持JSON、TXT多种返回格式,可自定义提取数量与间隔,与Python脚本无缝对接。
稳定低延迟:自建骨干网络节点,平均响应时间短,适合对实时性要求较高的业务场景。
完善的控制台:用户中心可查看用量统计、提取记录、可用IP数,方便开发者监控与调优。
无论你是做数据采集、电商比价、SEO排名监控,还是自动化测试,天启HTTP都能提供稳定可靠的代理IP支撑。
常见问题
Q: 天启代理API接口返回的JSON格式是什么样的?
A: 典型返回格式为 {"code": 0, "data": [{"ip": "1.2.3.4", "port": 8888, ...}]},其中 code 为0表示成功,其他值为错误码。具体字段可在控制台API文档页面查看。
Q: API提取频率有限制吗?
A: 有的。不同套餐对应的提取频率和每日提取量不同,建议在控制台"API提取"页面查看当前套餐的限制,避免短时间内频繁请求导致限频。
Q: Python调用时一直报 ProxyError 怎么办?
A: 通常是代理IP失效或网络不通。建议先检查本地网络是否正常,再确认代理IP是否在有效期内,必要时重新请求API获取新IP。
Q: 可以用 requests 的 Session 复用代理吗?
A: 可以。创建 requests.Session() 后设置 session.proxies,后续所有请求都会自动使用该代理,适合需要保持会话的场景。
Q: 天启HTTP支持HTTPS目标网站吗?
A: 支持。在 proxies 字典中同时配置 http 和 https 项即可,代理服务器会自动转发HTTPS请求。





