5 个版本
0.2.1 | 2019年5月5日 |
---|---|
0.2.0 | 2018年7月8日 |
0.1.2 | 2018年6月28日 |
0.1.1 | 2018年6月26日 |
0.1.0 | 2018年5月28日 |
#2254 在 命令行工具
每月 134 次下载
52KB
1K SLoC
ProxyConf
一个用于在 Windows 上设置代理配置的小型命令行工具。
为什么存在
仅在带有代理的仅命令行 windows 版本(Core 或 Nano)下使用可能存在问题:一些 windows 应用程序使用 IE 设置,但没有好的方法来设置它们,其他使用 WinHTTP 设置,而 netsh winhttp
可以配置,但它在最新的 nano 服务器映像上不可用。
proxyconf
旨在成为一款简单的命令行工具,可以执行此配置,并适合在容器(Docker)中使用。
示例用法
FROM microsoft/nanoserver:1803
COPY proxyconf.exe .
RUN proxyconf set proxy 10.0.0.1:8080 "*.my-company;<local>" \
&& proxyconf winhttp proxy 10.0.0.1:8080 "*.my-company;<local>"
命令行
proxyconf show
显示当前代理配置proxyconf set
设置当前用户代理配置。必须指定以下之一no-proxy
不使用代理。auto-detect
自动检测设置。Windows 将使用 Web 代理自动发现协议 或回退到直接连接proxy <ADDRESS:PORT> [BYPASS_LIST]
使用硬编码的代理(或代理,见下文)以及可选的绕过列表。setup-script <URL>
使用指定 URL 的 代理自动配置(PAC)。
proxyconf winhttp
设置系统范围的 WinHTTP 代理配置。必须指定以下之一no-proxy
不使用代理。proxy <ADDRESS:PORT> [BYPASS_LIST]
使用硬编码的代理(或代理,见下文)以及可选的绕过列表。
常见值
ADDRESS:PORT
要使用的代理服务器和可选端口号。
也可以是使用分号(;
)分隔的protocol=address:port
列表。协议包括http
、https
、ftp
和socks
。BYPASS_LIST
可选的地址列表,用分号分隔以绕过代理(;
)。
使用<local>
来绕过所有短名称主机。
如果没有指定,默认为<local>
。
可以更改的内容
Internet选项
每个用户的设置(默认情况下,有一个注册表标志来使用系统设置)由最初的Internet Explorer使用,现在由大多数应用程序使用。
它们可以在Internet Explorer设置中或从Windows的最新版本的控制面板中直接编辑。
WinHTTP设置
一个二进制密钥,用于存储使用WinHTTP编程接口的应用程序设置。它不支持比静态代理更多的功能,但它被如Windows更新等服务支持。
技术信息
此工具在注册表中设置了一些特定的键,其格式如下
二进制/现代Internet选项
存储为REG_BINARY值。
- 每个连接在以下路径下有一个键:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Connections
,LAN的默认设置在DefaultConnectionSettings
下。 - 如果
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings
密钥中的ProxySettingsPerUser
是1
(DWORD),则在HKEY_LOCAL_MACHINE
中使用相同的路径,设置是全局的。 - WinHTTP设置在
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Connections
键下的WinHttpSettings
值中使用旧版本。
我知道有3个版本
- 0x28 由
netsh winhttp
使用 - 0x3C 在IE 6中使用
- 0x46 从IE 7开始使用,并且在IE 11 / Windows 10中仍在使用
(未记录的)格式如下(所有值均为小端)
version: u32
版本号counter: u32
一个递增计数器,用于检测更改。configuration_bits: u32
一个位字段,包含以下位1
总是设置2
使用手动代理3
使用设置脚本(版本 >= 0x3C)4
自动检测设置(版本 >= 0x3C)
proxy_address_len: u32
代理地址字符串的长度。proxy_addres: Vec<u8>
代理地址(ASCII)。bypass_list_len: u32
绕过列表字符串的长度。bypass_list: Vec<u8>
绕过列表(ASCII)。setup_script_len: u32
设置脚本URL字符串的长度。 (版本 >= 0x3C)setup_script: Vec<u8>
设置脚本URL(ASCII)。 (版本 >= 0x3C)- 版本0x3C有28个未知字节,版本0x46有32个
值/传统互联网选项
它们现在不再使用,但保留供可能直接访问它们的应用程序使用,当进行更改时GUI会设置它们,但不会读取。它们存储在注册表键中 HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Connections
。
依赖项
~0.9–1.2MB
~13K SLoC