本指南以 API 代理 IP 提取为核心,结合参数化设计、JSON-first 接口规范、严格的版本管理与状态码标准,帮助您构建高成功率、低运维成本、可平滑扩展的数据采集流水线。
示例请求:
GET https://gw.smartproxy.cn/v1/ips?country=US&city=New%20York&type=dynamic_residential&count=5Authorization: Bearer sk_live_xxxxxxxxxxxxxX-Client-Id: your-application-id最佳实践:
特性 | 动态住宅代理 | 静态住宅代理 |
|---|---|---|
覆盖范围 | 更大的 IP 池,更易分散请求 | 固定 IP 池,稳定出口 |
适用场景 | 高并发采集、广域数据抓取 | 账号绑定、长会话交互、持续性会话任务 |
轮换特性 | 支持高频轮换 | 长期保持同一出口 IP |
组合策略建议: 入口层使用动态住宅代理扩大覆盖面,核心交易链路采用静态住宅代理保持稳态输出 [1][2]
country=US、country=DE、country=SGcity=New York、city=Berlin、city=Singaporeasn=12345,匹配指定运营商或骨干网络最佳实践: 发起请求前进行地域、ASN 预检验证,避免目标端地域配置错误 [4]
GET https://gw.smartproxy.cn/v1/ips ?type=dynamic_residential &country=US &city=New%20York &asn=22252 &count=3 &session=sticky &ttl=120 &purpose=data_collectionAuthorization: Bearer sk_live_xxxxxxxxxxxxxContent-Type: application/json核心参数说明:
type:dynamic_residential(动态住宅)或 static_residential(静态住宅)session:sticky(会话保持)或 rotate(自动轮换)ttl:生存时间(秒),控制出站 IP 有效期{ "request_id": "req_01hv1n2k3m4p5q6r", "ips": [ { "ip": "192.0.2.10", "port": 443, "country": "US", "city": "New York", "asn": 22252, "type": "dynamic_residential", "session_id": "sess_abcd1234efgh", "ttl": 120, "expires_at": "2025-10-23T10:45:30Z" }, { "ip": "198.51.100.7", "port": 443, "country": "US", "city": "New York", "asn": 22252, "type": "dynamic_residential", "session_id": "sess_abcd1234efgh", "ttl": 120, "expires_at": "2025-10-23T10:45:31Z" } ], "limits": { "rate_limit_per_min": 600, "burst": 120 }}状态码范围 | 含义 | 处理建议 |
|---|---|---|
2xx | 成功响应,200 为标准成功状态 | 正常处理 |
4xx | 客户端错误(无效参数、鉴权失败、触发限速等) | 检查请求参数与权限 |
5xx | 服务端异常或上游波动 | 根据 retryable 标记决定是否重试 |
强制要求:所有响应必须包含 trace-id,便于跨团队问题定位 [4]
{ "error": { "status": 429, "code": "RATE_LIMIT_EXCEEDED", "message": "请求频率超限,请稍后重试", "retryable": true, "retry_after_ms": 800, "trace_id": "trc_01hv2g7n8p9q" }}标准错误码枚举:
INVALID_PARAM:参数无效UNAUTHORIZED:未授权FORBIDDEN:权限不足RATE_LIMIT_EXCEEDED:速率限制UPSTREAM_TIMEOUT:上游超时INSUFFICIENT_BALANCE:余额不足关键字段:
retryable:指示是否建议重试,支持策略化处理session_id 在 TTL 有效期内复用相同出口 IP场景类型 | Session 配置 | TTL 建议 | Count 策略 |
|---|---|---|---|
爬虫采集 | rotate | 60–120 秒 | 按并发需求扩展 |
交互操作 | sticky | 180–600 秒 | 配合心跳与断线重连 |
关键事务 | 主链路 sticky + 回退链路 rotate | 根据业务调整 | 提升事务完成率 |
核心原则:
retryable=true 的错误执行重试伪代码示例:
for attempt in range(1, 6): response = get_ips() if response.ok: return response if not response.retryable: break sleep(base_delay * (2 ** (attempt - 1)) * random_jitter())核心实践:
业务指标:
资源指标:
以下示例统一采用相同的错误模型与参数命名规范,便于跨语言迁移与复用 [4]
curl -sS \ -H "Authorization: Bearer sk_live_xxxxxxxxxxxxx" \ "https://gw.smartproxy.cn/v1/ips?type=dynamic_residential&country=US&city=New%20York&count=2&session=sticky&ttl=120"import requestsurl = "https://gw.smartproxy.cn/v1/ips"params = { "type": "dynamic_residential", "country": "US", "city": "New York", "count": 2, "session": "sticky", "ttl": 120}headers = {"Authorization": "Bearer sk_live_xxxxxxxxxxxxx"}response = requests.get(url, params=params, headers=headers, timeout=15)print(response.json())import fetch from 'node-fetch';const url = new URL('https://gw.smartproxy.cn/v1/ips');url.search = new URLSearchParams({ type: 'dynamic_residential', country: 'US', city: 'New York', count: '2', session: 'sticky', ttl: '120'}).toString();const response = await fetch(url, { headers: { Authorization: 'Bearer sk_live_xxxxxxxxxxxxx' }});console.log(await response.json());package mainimport ( "fmt" "io/ioutil" "net/http" "net/url" "time")func main() { u, _ := url.Parse("https://gw.smartproxy.cn/v1/ips") q := u.Query() q.Set("type", "dynamic_residential") q.Set("country", "US") q.Set("city", "New York") q.Set("count", "2") q.Set("session", "sticky") q.Set("ttl", "120") u.RawQuery = q.Encode() req, _ := http.NewRequest("GET", u.String(), nil) req.Header.Set("Authorization", "Bearer sk_live_xxxxxxxxxxxxx") client := &http.Client{Timeout: 15 * time.Second} resp, err := client.Do(req) if err != nil { panic(err) } defer resp.Body.Close() body, _ := ioutil.ReadAll(resp.Body) fmt.Println(string(body))}import java.net.http.*;import java.net.URI;public class SmartproxyExample { public static void main(String[] args) throws Exception { var client = HttpClient.newHttpClient(); var uri = URI.create("https://gw.smartproxy.cn/v1/ips?type=dynamic_residential&country=US&city=New%20York&count=2&session=sticky&ttl=120"); var request = HttpRequest.newBuilder(uri) .header("Authorization", "Bearer sk_live_xxxxxxxxxxxxx") .GET() .build(); var response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); }}安全实践:
合规要求:
风险类型 | 缓解策略 |
|---|---|
地域不匹配 | 启用地域/ASN 预检与多源交叉验证,失败立即替换 |
ASN 偏移 | 配置备选 ASN 列表,偏差超阈值触发自动回退 |
资源波动 | 建立弹性缓冲池 + 降级策略,非关键任务延后执行 |
拥塞与限速 | 实施多级限速 + 队列机制,端到端可观测 |
上游不稳定 | 熔断回退至备用线路,蓝绿切换渐进式放量 |
✅ 海量资源池:8000万+ 住宅代理 IP,覆盖全球 200+ 国家与主要城市 [1] ✅ 高可用保障:99.9% 服务可用性承诺,SLO 驱动运维与弹性扩容 [3] ✅ 灵活组合:动态 + 静态住宅代理自由组合,满足并发与稳态双重需求 [1][2] ✅ 标准化接口:JSON-first API、统一错误模型,提供多语言 SDK 与完整示例 [4]
Q: 如何选择动态住宅代理或静态住宅代理? A: 需要长会话与稳定出口 IP 选择静态住宅代理,需要广域覆盖与高并发选择动态住宅代理 [1][2]
Q: 是否支持城市与 ASN 级别定向? A: 完全支持,通过 country、city、asn 参数灵活组合实现精准定向 [4]
Q: 速率限制与并发如何配置? A: 参考配额与限速示例,建议实施分层限速并配合连接池优化 [4]
Q: 错误如何分类与重试? A: 依据统一错误模型中的 retryable 字段与 HTTP 状态码进行策略化处理 [4]
Q: 账单是否透明? A: 计量数据与配额清晰展示,支持导出与审计 [1]
Q: 如何获得 7×24 技术支持? A: 通过官网联系渠道或您的客户成功经理 [5]
{ "error": { "status": 503, "code": "SERVICE_UNAVAILABLE", "message": "上游服务暂时不可用", "retryable": true, "retry_after_ms": 1200, "trace_id": "trc_01hv3k7m8n9p" }}HTTP 状态码 | 错误码 | 可重试 | 说明 |
|---|---|---|---|
400 | INVALID_PARAM | ❌ | 请求参数无效 |
401 | UNAUTHORIZED | ❌ | 未授权访问 |
403 | FORBIDDEN | ❌ | 权限不足 |
404 | NOT_FOUND | ❌ | 资源不存在 |
409 | CONFLICT | ✅ | 资源冲突 |
422 | UNPROCESSABLE_ENTITY | ❌ | 请求格式正确但语义错误 |
429 | RATE_LIMIT_EXCEEDED | ✅ | 超出速率限制 |
499 | CLIENT_CLOSED_REQUEST | ✅ | 客户端关闭连接 |
500 | INTERNAL_ERROR | ✅ | 服务器内部错误 |
502 | BAD_GATEWAY | ✅ | 网关错误 |
503 | SERVICE_UNAVAILABLE | ✅ | 服务暂时不可用 |
504 | GATEWAY_TIMEOUT | ✅ | 网关超时 |
准备将 API 代理 IP 提取能力整合到您的数据采集流水线?
与我们交流您的 SLO 目标、并发需求、地域覆盖与合规要求,获取可落地、可扩展的定制化实施方案。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。