14 releases (2 stable)
| 1.1.0 | Jul 11, 2025 |
|---|---|
| 1.0.0 | May 29, 2025 |
| 0.3.6 | Sep 12, 2024 |
| 0.3.4 | Aug 18, 2024 |
| 0.1.0 | May 16, 2024 |
#9 in #proxy-client
851 downloads per month
Used in 2 crates
21KB
399 lines
Proxied
Asynchronous proxy TCP connector
Includes:
- No
unsafecode - SOCKS4/5 and HTTP(s) proxies support
- Single structure for both types of proxies
TCPStream-like connection (seeTCPConnection)- Password authentication
How-to
Main entrypoint is Proxy structure.
It contains connection data about proxy like protocol, address port and credentials.
Additionally it supports IP refreshment link, although user is expected to manually request it.
To create a TCP connection, call Proxy::connect_tcp. After it is created, it can be used
just like regural TCP stream, as it implements AsyncRead and AsyncWrite.
Proxied
Async SOCKS4/5 and HTTP(s) client connectors for Rust
Features
- HTTP/HTTPS proxy
- SOCKS4/5 proxy
- Basic authorization for each type of proxy
- Fully async
- Proxy address as DNS Name
- Round-robin dispatch in case of multiple addresses
Getting started
Add the following to your Cargo.toml file:
[dependencies]
proxied = "0.3"
Example
use proxied::{Proxy, TCPConnection, NetworkTarget};
#[tokio::main]
async fn main() {
let proxy = Proxy::from_str("socks5://127.0.0.1:1080").unwrap();
let connection = proxy.connect(NetworkTarget::Domain {domain: "tcpbin.com", port: 4242}).await.unwrap();
// Send data to the echo server
let data = &[1, 2, 3, 4, 5, 6, 7, 8, 9];
connection.write(data).await.unwrap();
// Read the data back
let mut buf = vec![0; data.len()];
connection.read_exact(&mut buf).await.unwrap();
}
Dependencies
~3–19MB
~188K SLoC