24 releases
0.9.6 | Mar 25, 2024 |
---|---|
0.9.2 | Nov 30, 2023 |
0.8.2 | Apr 3, 2023 |
0.8.1 | Aug 25, 2022 |
0.3.0 | Jan 19, 2020 |
#93 in Network programming
37,371 downloads per month
Used in 14 crates
(7 directly)
100KB
2K
SLoC
SOCKS5 client/server library using async/.await
This library is maintained by anyip.io a residential and mobile socks5 proxy provider.
Features
- An
async
/.await
SOCKS5 implementation. - An
async
/.await
SOCKS4 Client implementation. - An
async
/.await
SOCKS4a Client implementation. - No unsafe code
- Built on-top of
tokio
library - Ultra lightweight and scalable
- No system dependencies
- Cross-platform
- Authentication methods:
- No-Auth method
- Username/Password auth method
- Custom auth methods can be implemented via the Authentication Trait
- Credentials returned on authentication success
- All SOCKS5 RFC errors (replies) should be mapped
AsyncRead + AsyncWrite
traits are implemented on Socks5Stream & Socks5SocketIPv4
,IPv6
, andDomains
types are supported- Config helper for Socks5Server
- Helpers to run a Socks5Server à la "std's TcpStream" via
incoming.next().await
- Examples come with real cases commands scenarios
- Can disable
DNS resolving
- Can skip the authentication/handshake process, which will directly handle command's request (useful to save useless round-trips in a current authenticated environment)
- Can disable command execution (useful if you just want to forward the request to a different server)
Install
Open in crates.io.
Examples
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:password@127.0.0.1:1337 https://ipapi.co/json/
TODO
- Tests have to be implemented
- Better Rust doc
- UDP bind command not implemented
Inspired by
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
Further consideration
- Implementation made with Tokio-codec https://github.com/yfaming/yimu-rs/blob/master/src/socks5.rs
Dependencies
~3–11MB
~120K SLoC