This library is maintained by anyip.io a residential and mobile socks5 proxy provider.
- An
async
/.await
SOCKS5 implementation. - An
async
/.await
SOCKS4 Client implementation. - An
async
/.await
SOCKS4a Client implementation. - No unsafe code
- Built on top of the Tokio runtime
- Ultra lightweight and scalable
- No system dependencies
- Cross-platform
- Infinitely extensible, explicit server API based on typestates for safety
- You control the request handling, the library only ensures you follow the proper protocol flow
- Can skip DNS resolution
- Can skip the authentication/handshake process (not RFC-compliant, for private use, to save on useless round-trips)
- Instead of proxying in-process, swap out
run_tcp_proxy
for custom handling to build a router or to use a custom accelerated proxying method
- Authentication methods:
- No-Auth method (
0x00
) - Username/Password auth method (
0x02
) - Custom auth methods can be implemented on the server side via the
AuthMethod
Trait- Multiple auth methods with runtime negotiation can be supported, with fast static dispatch (enums can be generated with the
auth_method_enums
macro)
- Multiple auth methods with runtime negotiation can be supported, with fast static dispatch (enums can be generated with the
- No-Auth method (
- UDP is supported
- All SOCKS5 RFC errors (replies) should be mapped
IPv4
,IPv6
, andDomains
types are supported- Exhaustive
examples
are provided that can be run immediately:- client
- server
- custom_auth_server
- router
- udp_client
Open in crates.io.
Please check examples
directory.
# Run client
RUST_LOG=debug cargo run --example client -- --socks-server 127.0.0.1:1337 --username admin --password password -a perdu.com -p 80
# Run server
RUST_LOG=debug cargo run --example server -- --listen-addr 127.0.0.1:1337 password -u admin -p password
# Test it with cURL
curl -v --proxy socks5://admin:[email protected]:1337 https://ipapi.co/json/
Thanks to all these SOCKS5 projects
- https://github.com/sfackler/rust-socks/blob/master/src/v5.rs
- https://github.com/shadowsocks/shadowsocks-rust/blob/master/src/relay/socks5.rs
- https://github.com/ylxdzsw/v2socks/blob/master/src/socks.rs
- Implementation made with Tokio-codec https://github.com/yfaming/yimu-rs/blob/master/src/socks5.rs