WinHTTP 代理是什么
Windows 里存在两套代理配置:一套是用户级的 WinINET/IE 代理,浏览器与大多数桌面程序用;另一套是系统级的 WinHTTP 代理,Windows 更新、部分系统服务和命令行工具用。netsh winhttp 管理的是后者。排障时最典型的场景是“浏览器能上网,但 PowerShell 或更新服务连不上外网”,原因就是只配了前者。
基本信息
| 适用平台 | Windows 全版本(netsh winhttp 上下文,需管理员) |
|---|---|
| 查看 | netsh winhttp show proxy |
| 设置 | netsh winhttp set proxy 代理:端口 [bypass-list=...] |
| 导入/重置 | netsh winhttp import proxy source=ie;netsh winhttp reset proxy |
| 区别要点 | WinHTTP 供服务与命令行;WinINET 供交互式用户程序 |
典型使用场景
- 服务器无外网直连:通过企业代理访问更新源与外部接口
- 命令行工具连不上:Invoke-WebRequest、包管理器报连接失败时确认代理设置
- 更新失败排查:Windows 更新走 WinHTTP,代理配错会表现为下载卡住
- 从 IE 设置继承:桌面用户已配好 IE 代理时一键导入
- 临时切换:测试完恢复默认(reset proxy)避免遗留错误配置
常用示例
常用示例
:: 查看当前 WinHTTP 代理配置
netsh winhttp show proxy
:: 设置代理与绕过列表(分号分隔)
netsh winhttp set proxy proxy.corp.local:8080 "10.*;localhost;*.corp.local"
:: 从 IE 设置导入(用户已配好时最省事)
netsh winhttp import proxy source=ie
:: 恢复默认(直连)
netsh winhttp reset proxy
:: PowerShell 侧访问时显式指定代理
powershell -c "Invoke-WebRequest https://example.com -Proxy 'http://proxy.corp.local:8080' -UseBasicParsing"两套代理对比
| 项目 | WinHTTP | WinINET/IE |
|---|---|---|
| 作用对象 | 系统服务、命令行工具 | 浏览器与交互式程序 |
| 配置入口 | netsh winhttp | Internet 选项 / 组策略 |
| 用户隔离 | 系统级,对所有用户生效 | 按用户配置 |
| 典型症状 | 更新与脚本连不上外网 | 浏览器无法打开网页 |
代理绕过列表里的通配写法随工具实现有差异,企业内网地址建议明确列出网段与域名而不是依赖通配符猜行为。写错的绕过规则会导致内部地址被发到代理上而失败。
排查顺序建议是先 show proxy 看配置,再用 Invoke-WebRequest 或 Test-NetConnection 验证连通性,最后才怀疑凭据与证书。盲目改配置会引入新的变量。
需要认证的企业代理不能只靠 netsh winhttp set proxy 解决:它只配置地址,不保存凭据。这时通常需要结合服务账户权限或改用支持凭据的方式访问。