# s5p -- Project ## Purpose A lightweight SOCKS5 proxy server that chains connections through Tor and/or arbitrary proxy hops (SOCKS4, SOCKS5, HTTP CONNECT). ## Motivation Existing solutions (`proxychains-ng`) rely on `LD_PRELOAD` hacks, only work on Linux, and intercept at the library level. s5p is a proper SOCKS5 server that any application can use natively -- no injection required. ## Architecture ``` TCP tunnel tunnel Client -------> s5p -------> Hop 1 -------> Hop 2 -------> Target SOCKS5 proto1 proto2 protoN ``` - **server.py** -- asyncio SOCKS5 server, chain builder, bidirectional relay - **proto.py** -- protocol handshake implementations (SOCKS5, SOCKS4/4a, HTTP CONNECT) - **config.py** -- YAML config loading, proxy URL parsing - **cli.py** -- argparse CLI, logging setup ## Dependencies | Package | Purpose | |---------|---------| | pyyaml | Config file parsing | All other functionality uses Python stdlib (`asyncio`, `socket`, `struct`). ## Design Decisions - **No LD_PRELOAD** -- clean SOCKS5 server, works with any client - **asyncio** -- single-threaded event loop, efficient for I/O-bound proxying - **Domain passthrough** -- never resolve DNS locally to prevent leaks - **Tor as a hop** -- no special Tor handling; it's just `socks5://127.0.0.1:9050`