# 系统代理覆盖

> 通过 Extended Preferences 设置实例固定代理基线或两跳代理链。

Source: https://console.getchrovia.com/zh/docs/sdk-system-proxy-override

**能力：**`systemProxyOverride`。**EP：**`internal.system_proxy_override`。它配置浏览器的系统代理基线，不修改机器全局操作系统设置。

## 单个服务器

```json
{
  "internal": {
    "system_proxy_override": {
      "server": "socks5://test-user:test-password@127.0.0.1:1080",
      "bypass_list": "localhost;127.0.0.1"
    }
  }
}
```

替换为可访问代理和有效测试凭据。HTTP、HTTPS 或 SOCKS 代理 URL 应明确指定 scheme。URI 用户名和密码中的特殊字符需要百分号编码。启动前合并并签名 EP。

`bypass_list` 是使用 Chromium 代理绕过规则的字符串，不是数组或导航通配映射。它可省略。本 EP 部分没有 `pac_url` 选项。

## 两跳代理链

```json
{
  "internal": {
    "system_proxy_override": {
      "chain": [
        { "server": "http://127.0.0.1:8080" },
        { "server": "socks5://test-user:test-password@proxy.example:1080" }
      ],
      "bypass_list": "localhost;127.0.0.1"
    }
  }
}
```

代理链有顺序：经过第一跳连接第二跳，不是故障回退列表。支持一或两跳；更长的链、非对象项及无效服务器会被拒绝。只要存在 `chain` 键就优先于 `server`，即使其格式错误也一样，不要同时填写并期待回退。

只有第一跳可以用 `{"use_system_proxy": true}` 代替 `server`，以使用系统固定代理设置，不会执行 PAC/WPAD。单个代理列表选择第一项；按协议分别配置时，优先选择 HTTPS 的第一个代理，其次 HTTP，再其次回退列表。不继承操作系统的绕过列表；需要绕过的目的地应在此 EP 部分的 `bypass_list` 中配置。

固定规则与 PAC 设置并存时，仍可能使用固定规则。没有可用固定代理时，会跳过该跳并可能继续使用其余显式代理，不要把它当成失败时默认拒绝的强制上游依赖。

## SOCKS5 Challenge 认证

服务器跳可设置 `challenge_auth: true` 使用 Chrovia 的附加 SOCKS5 Challenge 认证协议。它需要兼容代理服务器，不是普通 RFC 1929 用户名密码认证。普通第三方代理应省略或设为 false。合适时也可以对首个 `use_system_proxy` 跳使用此选项。

SOCKS5 通常在远端解析目标主机；Chrovia 还支持使用本地 DNS 的 `socks5-local` URI 变体。应明确选择，特别是在使用主机解析规则或仅本地可解析域名时。

## 优先级与验证

覆盖只替代系统基线，Chromium 更高优先级的代理配置仍可能生效。它不是覆盖所有命令行、策略和扩展代理设置的通用锁。能力、配置缺失或配置无效时保留普通代理选择。

重启后通过自己控制的接口检查实际出口地址，分别测试绕过目的地。出口 IP 改变不等于浏览器指纹改变，身份配置使用指纹覆盖。限制 EP 文件访问：其中的代理凭据可被读取，已签名文件也一样。
