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 |