| Crates.io | soxide |
| lib.rs | soxide |
| version | 0.2.0 |
| created_at | 2025-09-18 15:44:27.981599+00 |
| updated_at | 2025-09-18 15:44:27.981599+00 |
| description | A lightweight SOCKS5 proxy |
| homepage | https://github.com/apokryptein/soxide |
| repository | https://github.com/apokryptein/soxide |
| max_upload_size | |
| id | 1844921 |
| size | 68,059 |
A lightweight, fast SOCKS5 proxy library and server.
Add to your Cargo.toml:
[dependencies]
soxide = { git = "https://github.com/apokryptein/soxide" }
Install the latest version from GitHub:
cargo install --git https://github.com/apokryptein/soxide
Or clone and build locally:
git clone https://github.com/apokryptein/soxide
cd soxide
cargo install --path <path>
soxide --listen 127.0.0.1:1080
# or
soxide -l 127.0.0.1:1080
soxide -l 127.0.0.1:1080 --username <user> --password <pass>
# or
soxide -l 127.0.0.1:1080 -u <user> -p <pass>
soxide -l 127.0.0.1:1080 -v
use soxide::Socks5Server;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let server = Socks5Server::new("127.0.0.1:1080");
server.run().await?;
Ok(())
}
use soxide::{Socks5Server, auth::UserPass};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let auth = UserPass {
username: "<user>".to_string(),
password: "<pass>".to_string(),
};
let server = Socks5Server::new("127.0.0.1:1080")
.with_auth(Some(auth));
server.run().await?;
Ok(())
}
| Feature | Status | Notes |
|---|---|---|
| CONNECT | Full support | RFC 1928 |
| UDP ASSOCIATE | Full Support | RFC 1928 |
| No Authentication | Full Support | RFC 1928 |
| Username/Password | Full Support | RFC 1929 |
| IPv4, IPv6, Domain Names | Full Support | RFC 1928 |
| BIND | Not supported | Rarely used - unlikely to implement |
| GSSAPI Authentication | Not supported | Future feature |