实现socks5/shadowsocks/redirect/http(tcp)和shadowsocks/tproxy/tunnel(udp)协议的代理服务器。
shadowprox的Python项目详细描述
shadowproxy
简介
实现socks5/shadowsocks/redirect/http(tcp)和shadowsocks/tproxy/tunnel(udp)协议的代理服务器。
多亏了dabeaz出色的curio项目。
这个项目的灵感来自qwj的python-proxy项目。
它是shadowsocks和shadowsocks libev的替代品,你可以用一个shadowproxy命令替换ss redir,ss tunnel,ss server,ss local。
安装
shadowproxy需要python3.6+
pip3 install shadowproxy
功能
支持的协议
protocol | server | client | scheme |
---|---|---|---|
socks5 | ✓ | ✓ | socks:// |
socks4 | ✓ | ✓ | socks4:// |
ss | ✓ | ✓ | ss:// |
ss aead | ✓ | ✓ | ss:// |
http connect | ✓ | ✓ | http:// |
http forward | ✓ | forward:// | |
transparent proxy | ✓ | red:// | |
tunnel(udp) | ✓ | tunneludp:// | |
ss(udp) | ✓ | ✓ | ssudp:// |
支持的插件
plugin | server | client |
---|---|---|
http_simple | ✓ | ✓ |
tls1.2_ticket_auth | ✓ | ✓ |
支持的密码
- AES-256-CFB
- AES-128-CFB
- AES-192-CFB
- 查查20
- 萨尔萨20
- RC4
- chacha20-ietf-poly1305
- AES-256-GCM
- AES-192-GCM
- AES-128-GCM
其他功能
- 同时支持IPv4和IPv6
以下是一些IPv6 URL示例:
http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html
http://[1080:0:0:0:8:800:200C:417A]/index.html
http://[3ffe:2a00:100:7031::1]
http://[1080::8:800:200C:417A]/foo
http://[::192.9.5.5]/ipng
http://[::FFFF:129.144.52.38]:80/index.html
http://[2010:836B:4179::836B:4179]
用法
usage: shadowproxy [-h] [-v] [--version] server [server ...]
uri syntax:
{scheme}://[{userinfo}@][hostname]:{port}[/?[plugin={p;args}][via={uri}][target={t}][source_ip={ip}]][#{fragment}]
userinfo = cipher:password or base64(cipher:password) when scheme is ss, ssudp
userinfo = username:password or base64(username:password) when scheme is socks, http.
示例:
# simple shadowsocks server
shadowproxy ss://chacha20:password@0.0.0.0:8888
# ipv6 binding
shadowproxy ss://chacha20:password@[::]:8888
# socks5 --> shadowsocks
shadowproxy -v socks://:8527/?via=ss://aes-256-cfb:password@127.0.0.1:8888
# http --> shadowsocks
shadowproxy -v http://:8527/?via=ss://aes-256-cfb:password@127.0.0.1:8888
# redir --> shadowsocks
shadowproxy -v red://:12345/?via=ss://aes-256-cfb:password@127.0.0.1:8888
# shadowsocks server (udp)
shadowproxy -v ssudp://aes-256-cfb:password@:8527
# tunnel --> shadowsocks (udp)
shadowproxy -v tunneludp://:8527/?target=8.8.8.8:53&via=ssudp://aes-256-cfb:password@127.0.0.1:8888
# tproxy --> shadowsocks (udp)
shadowproxy -v tproxyudp://:8527/?via=ssudp://aes-256-cfb:password@127.0.0.1:8888