fast-socks5

Crates.iofast-socks5
lib.rsfast-socks5
version
sourcesrc
created_at2020-01-13 09:55:04.422205
updated_at2025-02-06 08:11:48.706362
descriptionFast SOCKS5 client/server implementation written in Rust async/.await (tokio)
homepage
repositoryhttps://github.com/dizda/fast-socks5
max_upload_size
id198029
Cargo.toml error:TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
Jonathan Dizdarevic (dizda)

documentation

README

SOCKS5 client/server library using async/.await

License crates.io dependency status Release

This library is maintained by anyip.io a residential and mobile socks5 proxy provider.

Features

  • An async/.await SOCKS5 implementation.

  • An async/.await SOCKS4 Client implementation.

  • An async/.await SOCKS4a Client implementation.

  • No unsafe code

  • Built on top of the Tokio runtime

  • Ultra lightweight and scalable

  • No system dependencies

  • Cross-platform

  • Infinitely extensible, explicit server API based on typestates for safety

    • You control the request handling, the library only ensures you follow the proper protocol flow
    • Can skip DNS resolution
    • Can skip the authentication/handshake process (not RFC-compliant, for private use, to save on useless round-trips)
    • Instead of proxying in-process, swap out run_tcp_proxy for custom handling to build a router or to use a custom accelerated proxying method
  • Authentication methods:

    • No-Auth method (0x00)
    • Username/Password auth method (0x02)
    • Custom auth methods can be implemented on the server side via the AuthMethod Trait
      • Multiple auth methods with runtime negotiation can be supported, with fast static dispatch (enums can be generated with the auth_method_enums macro)
  • UDP is supported

  • All SOCKS5 RFC errors (replies) should be mapped

  • IPv4, IPv6, and Domains types are supported

Install

Open in crates.io.

Examples

Please check examples directory.

# Run client
RUST_LOG=debug cargo run --example client -- --socks-server 127.0.0.1:1337 --username admin --password password -a perdu.com -p 80

# Run server
RUST_LOG=debug cargo run --example server -- --listen-addr 127.0.0.1:1337 password -u admin -p password

# Test it with cURL
curl -v --proxy socks5://admin:password@127.0.0.1:1337 https://ipapi.co/json/

TODO

  • Tests have to be implemented
  • Better Rust doc

Inspired by

Thanks to all these SOCKS5 projects

Further consideration

Commit count: 176

cargo fmt