2 releases
0.1.3 | Apr 6, 2022 |
---|---|
0.1.2 | Dec 30, 2021 |
0.1.1 |
|
0.1.0 |
|
#34 in #socks5-proxy
18KB
502 lines
rsocx
A high performence Socks5 proxy server with bind/reverse support
Features
- Async-std
- No unsafe code
- Single executable
- Linux/Windows/Mac/BSD support
- Support reverse mode(Not bind any port in client)
Build & Run
$> cargo build --release
Installation
$> cargo install rsocx
Usage
Bind Mode
You can run a socks5 proxy and listen port at 1080
$> ./rsocx -l 0.0.0.0:1080
Reverse Mode
First listen a port waiting for slave connection
$> ./rsocx -t 0.0.0.0:8000 -s 0.0.0.0:1080
then reverse connect to master in slave
$> ./cliws -r 127.0.0.1:8000
Benchmark
Simple load test through proxychains4
visit to Tornado's helloworld
case in LAN.
import grequests
import time
start = time.time()
req_list = [grequests.get('http://192.168.0.222:8888') for i in range(1000)]
res_list = grequests.map(req_list)
print(time.time()-start)
Test Envoriment
Envoriment | Value |
---|---|
Proxy OS | Windows11 |
CPU | i7-9700k |
Target OS | Ubuntu20.04 |
Network | LAN |
Target Server | Tornado(Python) |
Test Count | 1k |
Socks5 client | Proxychains4 |
Test Result
Project | Language | Base | Take Time |
---|---|---|---|
rsocx | Rust | Async-std | 12.90s |
rsocx(reverse) | Rust | Aysnc-std | 24.65s |
merino | Rust | Tokio | 12.37s |
go-socks5 | Golang | goroutine | 12.31s |
simple-socks | Nodejs | async | 13.71s |
asio5 | C++ | Boost::Asio | 12.37s |
esocks | Java | Thread-Pool | 25.06s |
(Test Date : 13 Nov 2021)
Socks5 Protocol Support
- IPV6 Support
-
SOCKS5
Authentication Methods-
NOAUTH
-
USERPASS
-
-
SOCKS5
Commands-
CONNECT
-
BIND
-
ASSOCIATE
-
Reference
Dependencies
~7–16MB
~234K SLoC