代理功能

注意

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在新窗口打开

上次更新:
贡献者: tickbh