环境变量 http_proxy 和 https_proxy 的设置会影响依赖系统环境变量进行网络请求的程序。它们主要用于告诉程序通过指定的代理服务器访问 HTTP 或 HTTPS 网络资源。下面是一些常见的受影响程序和工具:
🧰 受影响的程序和工具
| 程序/工具类型 | 是否支持环境变量代理 | 说明 |
|---|---|---|
| 命令行工具 | ✅ 支持 | 如 curl, wget, git, apt, yum, pip 等,通常会自动读取这些环境变量。 |
| 编程语言库 | ✅/❌ 取决于库 | 比如 Python 的 requests 支持环境变量,Go 的 http.Client 默认不读环境变量,需手动配置。 |
| 包管理器 | ✅ 支持 | 如 npm, pip, cargo, gem 等,通常会读取代理环境变量。 |
| 浏览器 | ❌ 不支持 | Chrome、Firefox 等不会读取系统的 http_proxy 环境变量,而是使用自己的代理设置。 |
| 系统更新工具 | ✅ 支持 | 如 Linux 的 apt-get、dnf、yum 等,通常会读取环境变量。 |
| Docker / Podman | ✅ 支持 | 容器构建时可以通过环境变量设置代理,影响 docker build 等命令。 |
| Git | ✅ 支持 | Git 会读取环境变量,也可以通过 git config 设置代理。 |
| VS Code / IDEs | ❌/✅ 取决于配置 | 一些 IDE 不读取环境变量,但可以在设置中手动配置代理。 |
⚙️ 设置方式示例(Linux/macOS)
export http_proxy="http://proxy.example.com:8080"
export https_proxy="http://proxy.example.com:8080"
对于需要用户名密码的代理:
export http_proxy="http://username:password@proxy.example.com:8080"
在 Windows 上,可以通过系统环境变量设置,或在命令行中使用:
set http_proxy=http://proxy.example.com:8080
🧠 注意事项
- 某些程序(如 Go 编写的工具)不会自动读取这些环境变量,需在代码中显式设置代理。
- 如果你使用的是 GUI 程序(如浏览器或某些 IDE),通常需要在程序内部设置代理。
- 有些程序还支持
NO_PROXY环境变量,用于指定不走代理的地址(如本地地址)。
在 Windows 系统中,环境变量 http_proxy 和 https_proxy 对“账户管理”和“系统更新程序”的影响是非常有限的,甚至可以说几乎无效,除非你在企业环境中做了特殊配置。下面是详细拆解:
🧑💻 Windows账户(登录、Microsoft账户)
- 不受影响:Windows 登录过程、Microsoft 账户验证等操作不会读取
http_proxy或https_proxy环境变量。 - 使用系统代理设置:这些流程依赖的是系统级代理设置(通过“Internet选项”或“设置 > 网络和 Internet > 代理”配置),而不是环境变量。
- 企业场景例外:在企业部署中,可能通过组策略或注册表配置代理影响账户验证流程,但这不是通过环境变量实现的。
🔄 Windows更新程序(Windows Update)
- 不读取环境变量:Windows Update 使用的是系统服务(
svchost.exe下的wuauserv),它不会读取用户级的http_proxy或https_proxy。 - 依赖系统代理设置:它使用 WinHTTP 层的代理配置,而不是 WinINET(浏览器层)或环境变量。
- 配置方式:
- 使用
netsh winhttp命令设置代理,例如:netsh winhttp set proxy proxy-server="http://proxy.example.com:8080" - 查看当前设置:
netsh winhttp show proxy
- 使用
✅ 哪些 Windows 程序会读取环境变量代理?
- PowerShell 脚本(取决于使用的模块)
- WSL(Windows Subsystem for Linux)中的 Linux 工具
- Git for Windows(如果是基于 MinGW 或 WSL)
- Python、Node.js、Go 等开发环境中的工具
🧠 总结
| 功能/程序 | 是否读取环境变量代理 | 推荐配置方式 |
|---|---|---|
| Windows账户登录 | ❌ 不读取 | 系统代理设置 |
| Windows Update | ❌ 不读取 | netsh winhttp 设置 |
| WSL/Linux工具 | ✅ 读取 | export http_proxy=... |
| 浏览器 | ❌ 不读取 | 浏览器内部代理设置 |