socks-hub
SOCKS-HUB is a SOCKS5 proxy hub.
It can convert HTTP/HTTPS proxy to SOCKS5 proxy, and can also forward SOCKS5 proxy.
It is a simple and efficient alternative to privoxy.
Compared with the tens of thousands of lines of privoxy code, SOCKS-HUB has only 800 lines of code,
so you won't have any mental burden when using it.
Wish you happy using it.
Installation
Install from binary
Download the binary from releases and put it in your PATH.
Install from source
If you have rust toolchain installed, this should work:
cargo install socks-hub
Usage
SOCKS5 hub for downstreams proxy of HTTP or SOCKS5.
Usage: socks-hub.exe [OPTIONS] --listen-proxy-role <URL> --remote-server <URL>
Options:
-l, --listen-proxy-role <URL> Source proxy role, URL in the form proto://[username[:password]@]host:port, where proto is one of socks5,
http. Username and password are encoded in percent encoding. For
example: http://myname:pass%40word@127.0.0.1:1080
-m, --middle-server <URL> Optional middle SOCKS5 server, URL in form of socks5://[username[:password]@]host:port
-r, --remote-server <URL> Remote SOCKS5 server, URL in form of socks5://[username[:password]@]host:port
-a, --acl-file <path> ACL (Access Control List) file path, optional
-v, --verbosity <level> Log verbosity level [default: info] [possible values: off, error, warn, info, debug, trace]
-h, --help Print help
-V, --version Print version
If you want a SOCKS5 chain, pass -m for the middle hop and -r for the final target SOCKS5 server.
The C API exports the same option as the second argument of socks_hub_run; pass NULL to skip the middle hop.
ACL files use a new explicit routing model:
[default proxy],[default direct]or[default block]selects the fallback action.[proxy]contains targets that must go through proxy.[direct]contains targets that must connect directly.[outbound_block]or[block]contains targets that must be blocked.- Rules are evaluated within a section in file order, and the first match wins.
Before running any test, generate the ACL file first:
python3 genacl_proxy_gfw_bypass_china_ip.py --default-action blockThis generator builds the shared ACL file used by both client-side and server-side target routing, so the generated
proxyanddirectsections stay aligned with the current ACL behavior. Use--default-action proxy,direct, orblockto choose the fallback behavior.
Smoke tests
By default they use target/debug/socks-hub. Set SOCKS_HUB_BIN if the binary lives somewhere else.
The repository includes small Python smoke tests for the chained SOCKS5 flow:
python3 scripts/smoke_tcp_chain.py
python3 scripts/smoke_udp_chain.py
python3 scripts/smoke_tcp_direct.py
python3 scripts/smoke_udp_direct.py