#tor #proxy #networking

bin+lib tor-stream

Rust interface for proxying network streams over the Tor network

4 releases (2 breaking)

0.3.0 Jul 10, 2021
0.2.0 Apr 25, 2019
0.1.1 Feb 27, 2019
0.1.0 Feb 25, 2019

#86 in #tor

Download history 94/week @ 2024-11-14 71/week @ 2024-11-21 166/week @ 2024-11-28 247/week @ 2024-12-05 301/week @ 2024-12-12 221/week @ 2024-12-19 97/week @ 2024-12-26 116/week @ 2025-01-02 51/week @ 2025-01-09 102/week @ 2025-01-16 371/week @ 2025-01-23 64/week @ 2025-01-30 165/week @ 2025-02-06 117/week @ 2025-02-13 59/week @ 2025-02-20 82/week @ 2025-02-27

443 downloads per month
Used in 13 crates (2 directly)

MIT license

10KB
137 lines

tor-stream

Provides an interface for proxying network streams over the Tor network.

See the documentation for more.


lib.rs:

Provides an interface for proxying network streams over the Tor network.

See setup for information on creating a local Tor SOCKS5 proxy.

Usage

If your Tor proxy is running on the default address 127.0.0.1:9050, you can use TorStream::connect(). If that is not the case, you can specify your address in a call to TorStream::connect_with_address().

use tor_stream::TorStream;
use std::io::prelude::*;

let mut stream = TorStream::connect("www.example.com:80").expect("Failed to connect");

// The stream can be used like a normal TCP stream

stream.write_all(b"GET / HTTP/1.1\r\nConnection: Close\r\nHost: www.example.com\r\n\r\n").expect("Failed to send request");

// If you want the raw stream, call `into_inner()`

let mut stream = stream.into_inner();

let mut buf = String::new();
stream.read_to_string(&mut buf).expect("Failed to read response");

println!("Server response:\n{}", buf);

Credits

This crate is mostly a wrapper about Steven Fackler's socks crate.

Dependencies

~130–375KB