# 静态住宅协议接入

使用实例端点和独立凭据接入HTTP、HTTPS CONNECT与SOCKS5，并说明安全和重试边界。

静态住宅实例直接交付代理 IP、端口、用户名和密码。连接时只使用 IP 管理页面当前展示的实例信息，不复用动态住宅网关主机、子账号或客户白名单。

## 准备环境变量

把敏感值放入本地密钥管理或进程环境，不要写进源码、命令历史和日志。

```bash
export STATIC_PROXY_IP='<proxy-ip>'
export STATIC_PROXY_PORT='<proxy-port>'
export STATIC_PROXY_USER='<proxy-user>'
export STATIC_PROXY_PASS='<proxy-pass>'
```

示例中的检测地址使用保留的 `.invalid` 域名，运行前请替换为您有权访问的公开检测目标。

## HTTP 与 HTTPS CONNECT

使用 HTTP 代理访问 HTTPS 目标时，客户端会通过代理建立 CONNECT 隧道：

```bash
curl \
  --proxy "http://${STATIC_PROXY_USER}:${STATIC_PROXY_PASS}@${STATIC_PROXY_IP}:${STATIC_PROXY_PORT}" \
  --connect-timeout 10 \
  --max-time 30 \
  'https://ip.example.invalid/location'
```

代理密码包含特殊字符时，优先使用客户端提供的独立认证参数或安全 URI 编码能力，避免手工拼接后被错误解析。

## SOCKS5 TCP

需要由代理端解析目标域名时使用 `socks5h`：

```bash
curl \
  --proxy "socks5h://${STATIC_PROXY_USER}:${STATIC_PROXY_PASS}@${STATIC_PROXY_IP}:${STATIC_PROXY_PORT}" \
  --connect-timeout 10 \
  --max-time 30 \
  'https://ip.example.invalid/location'
```

当前静态住宅只说明 SOCKS5 TCP 接入，不包含 SOCKS5 UDP。

## Python 示例

```python
import os
import requests

proxy_url = (
    f"http://{os.environ['STATIC_PROXY_USER']}:"
    f"{os.environ['STATIC_PROXY_PASS']}@"
    f"{os.environ['STATIC_PROXY_IP']}:"
    f"{os.environ['STATIC_PROXY_PORT']}"
)

response = requests.get(
    "https://ip.example.invalid/location",
    proxies={"http": proxy_url, "https": proxy_url},
    timeout=(10, 30),
)
response.raise_for_status()
print(response.text)
```

## 连接与重试建议

- 建立连接和读取响应分别设置超时，不允许无限等待。
- 认证失败时先重新读取当前凭据，不要自动反复换 IP。
- 换 IP 或修改凭据后关闭旧连接池，再使用实例页面的新信息创建连接。
- 实例过期、异常或售后操作处理中时停止业务请求，避免制造无意义重试。
- 不记录完整代理 URL；日志只保留实例编号、协议、耗时和脱敏错误。

## 接口边界

当前静态住宅目录、购买、凭据和售后操作只在登录态控制台中提供，不开放客户 API 令牌形式的静态住宅接口。自动化程序可以消费已经安全配置到运行环境中的代理端点，但不能依赖内部控制台接口或浏览器会话抓取凭据。

产品概念与购买流程见[静态住宅首次购买与连接](/help/getting-started/static-residential-quickstart)。

html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}
