代理功能
注意
wmproxy 目前仍处于 RC (Release Candidate) 阶段。您可以尝试用它来实现您的需求,但是现在目前来说不是非常的稳定,并未进行过超级充分的测试,暂时尽量不要用于生产环境。
获取相关命令
代理功能的子命令为proxy
,我们通过help信息。 通过运行wmproxy proxy --help
,可以详细的了解代理相关功能
PS C:\Users\wmproxy> wmproxy proxy --help
Usage: wmproxy.exe proxy [-s=ARG] [-b=ARG] [-c=ARG] [--flag=ARG] [-S=ARG] [--user=ARG] [--pass=ARG] [
--udp-bind=ARG] [--map-http-bind=ARG] [--map-https-bind=ARG] [--map-tcp-bind=ARG] [--map-proxy-bind=ARG
] [--map-cert=ARG] [--map-key=ARG] [--ts] [--tc] [--two-way-tls] [--domain=ARG] [--cert=ARG] [--key=ARG
] [--mappings=ARG]... [--control=ARG] [--disable-stdout] [--disable-control] [-v] [--default-level=ARG
]
代理类, 一个代理类启动一种类型的代理
-s, --server-id=ARG 代理id
[default: 0]
-b, --bind=ARG 代理绑定端口地址
-c, --center-addr=ARG 中心代理绑定端口地址
--flag=ARG 代理种类, 如http https socks5
-S, --server=ARG 连接代理服务端地址
--user=ARG 用于socks验证及中心服务器验证
--pass=ARG 用于socks验证及中心服务器验证
--udp-bind=ARG udp的绑定地址
--map-http-bind=ARG 内网http的映射地址
--map-https-bind=ARG 内网https的映射地址
--map-tcp-bind=ARG 内网tcp的映射地址
--map-proxy-bind=ARG 内网代理的映射地址
--map-cert=ARG 内网映射的证书cert
--map-key=ARG 内网映射的证书key
--ts 连接服务端是否启用tls
--tc 接收客户端是否启用tls
--two-way-tls 双向认证是否启用
--domain=ARG tls证书所用的域名
--cert=ARG 公开的证书公钥文件
--key=ARG 隐私的证书私钥文件
--mappings=ARG
Available options:
--control=ARG 输入控制台的监听地址
[default: 127.0.0.1:8837]
--disable-stdout 禁用默认输出
--disable-control 禁用控制微端
-v, --verbose 是否显示更多日志
--default-level=ARG 设置默认等级
-h, --help Prints help information
可以详细的知识命令行的参数及其作用,通常了解程序最快的途径
- 参考官方文档
- 程序的help命令
- 阅读源码
启动绑定
我们可以通过wmproxy proxy --bind 127.0.0.1:8090
,轻松的得到监听8090的http代理端口。 控制台输出:
2024-02-01T14:49:24.142732200+08:00 INFO wmproxy::control::server - 控制端口绑定:127.0.0.1:8837,提供中控功能。
2024-02-01T14:49:24.142930+08:00 TRACE wmproxy::wmcore - 开始启动服务器,正在加载配置中
2024-02-01T14:49:24.143088500+08:00 INFO wmproxy::option - 绑定代理:127.0.0.1:8090,提供代理功能。
表明我们已经启动成功。 接下来用curl来测试是否代理成功:
测试HTTP代理
HTTP代理本质上就是将我们的请求原样的转发给目标服务器,如果代理只做双向绑定也是可以成功
curl.exe --proxy http://127.0.0.1:8090 http://www.baidu.com -I
结果如下,符合预期:
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: keep-alive
Content-Length: 277
...
测试HTTPS代理
因为https代理会先返回200表示代理接受,所以在https代理中会有两个头返回。
curl.exe --proxy http://127.0.0.1:8090 https://www.baidu.com -I
结果如下,符合预期:
HTTP/1.1 200 OK
Server: wenmeng
content-length: 0
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: keep-alive
Content-Length: 277
...
测试Socks5代理
因为https代理会先返回200表示代理接受,所以在https代理中会有两个头返回。
curl.exe --proxy socks5://127.0.0.1:8090 http://www.baidu.com -I
结果如下,符合预期:
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: keep-alive
...
带密码的绑定
我们可以通过wmproxy proxy --bind 127.0.0.1:8090 --user wmproxy --pass ilike
,此时我们得到用户为wmproxy
密码为ilike
的用户密码。
测试HTTP代理
如果我们未输入用户密码,结果将返回:
HTTP/1.1 407 Proxy Authentication Required
Server: wenmeng
content-length: 0
带用户密码
curl.exe --proxy http://wmproxy:ilike@127.0.0.1:8090 http://www.baidu.com -I
将能够得到正常输出
测试HTTPS代理
如果我们未输入用户密码,结果将返回:
HTTP/1.1 407 Proxy Authentication Required
Server: wenmeng
content-length: 0
curl: (56) CONNECT tunnel failed, response 407
带用户密码
curl.exe --proxy http://wmproxy:ilike@127.0.0.1:8090 https://www.baidu.com -I
将能够得到正常输出
测试Socks5代理
如果我们未输入用户密码,结果将返回:
curl: (97) No authentication method was acceptable.
带用户密码
curl.exe --proxy socks5://wmproxy:ilike@127.0.0.1:8090 https://www.baidu.com -I
将能够得到正常输出
此时代理服务器已正常启用。
支持作者
如果该项目对您有用,请帮忙加个Star,Github