NO_PROXY 描述应直接访问的目标,并非列出要避开的代理服务器。把所选代理自身的 IP 加入列表,不能用来决定无关网站是否使用该代理。

条目在 curl 中的含义
example.com该域名及匹配的子域名绕过代理。
.example.com按域名后缀排除,也包括域名本身。
192.168.1.10以字面 IP 作为目标且匹配时,绕过代理。
192.168.0.0/16匹配的字面 IP 目标绕过代理;CIDR 支持要求 curl 7.86.0 或更新版本。
*所有目标都绕过代理。

空列表与星号不同

进行一次明确的代理测试时,空的命令行列表会清除来自环境的绕过匹配:

curl --proxy http://203.0.113.10:8080 --noproxy '' \
  --connect-timeout 5 --max-time 15 https://example.com/

把文档示例端点换成你的 HTTP 代理,或HTTP 代理列表中的候选项。若要反向对比,带引号的通配符会使请求直连,即使仍指定了代理选项:

curl --proxy http://203.0.113.10:8080 --noproxy '*' \
  --connect-timeout 5 --max-time 15 https://example.com/

保留通配符外的引号,避免 shell 将它展开成文件名。取消环境变量、将其设为空值以及通过命令行覆盖是不同的操作;只移除一处定义后,其他适用设置可能仍然存在。

CIDR 并非针对所有解析到某网段的主机名的规则

CIDR 条目与用作目标主机的 IP 地址匹配。它不是一条通用指令,不会先解析每个主机名,再在结果落入该网段时绕过代理。因此,使用主机名的 URL 与使用其数字地址的 URL 可能选择不同路线。

URL 包含主机名或域名后缀时,应按这些内容设置规则。不要把完整协议方案、路径或浏览器绕过表达式放进此列表,并假设 curl 会作相同解释。

这些规则描述 curl 8.14.1。其他客户端有各自的 NO_PROXY 行为,通配符和端口匹配也可能不同。

相关文章