A very simple NIO TCP proxy server
Project description
simple-proxy :rocket:
A very simple TCP proxy tool (not http proxy) empowered by nio tcp framework py-netty
Installation
pip install simple-proxy
Usage
Usage: simple-proxy [OPTIONS]
Options:
-l, --local-server TEXT Local server address [default: localhost]
-lp, --local-port INTEGER Local port [default: 8080]
-r, --remote-server TEXT Remote server address [default: localhost]
-rp, --remote-port INTEGER Remote port [default: 80]
-g, --global Listen on 0.0.0.0
-c, --tcp-flow Dump tcp flow on to console
-f, --save-tcp-flow Save tcp flow to file
-s, --tls Denote remote server listening on secure
port
-ss Denote local sever listening on secure port
-kf, --key-file PATH Key file for local server
-cf, --cert-file PATH Certificate file for local server
--speed-monitor Print speed info to console for established
connection
--speed-monitor-interval INTEGER
Speed monitor interval [default: 5]
-dti, --disguise-tls-ip TEXT Disguise TLS IP
-dtp, --disguise-tls-port INTEGER
Disguise TLS port [default: 443]
-wl, --white-list TEXT IP White list for incoming connections
(comma separated)
--run-mock-tls-server Run mock TLS server
-v, --verbose Verbose mode
-h, --help Show this message and exit.
Features
Basic proxy (TLS termination)
> simple-proxy --tls -r www.google.com -rp 443 -lp 8080
Proxy server started listening: localhost:8080 => www.google.com:443(TLS) ...
console:False, file:False, disguise:n/a, whitelist:*
> curl -I -H 'Host: www.google.com' http://localhost:8080
HTTP/1.1 200 OK
...
> simple-proxy -r www.google.com -rp 80 -lp 8443 -ss
Proxy server started listening: localhost:8443(TLS) => www.google.com:80 ...
console:False, file:False, disguise:n/a, whitelist:*
> curl -I -H 'Host: www.google.com' -k https://localhost:8443
HTTP/1.1 200 OK
...
Dump TCP flow
TCP flow can be dumped into console or files (under directory tcpflow)
> simple-proxy -r www.google.com -rp 443 -lp 8443 -ss -s -c -f
Proxy server started listening: localhost:8443(TLS) => www.google.com:443(TLS) ...
console:True, file:True, disguise:n/a, whitelist:*
> curl -k -I -H 'Host: www.google.com' https://localhost:8443
Connection status monitor
> $ simple-proxy -r echo-server.proxy.com -rp 8080 -lp 48080 --speed-monitor
Proxy server started listening: localhost:48080 => echo-server.proxy.com:8080 ...
console:False, file:False, disguise:n/a, whitelist:*
Connection opened: ('127.0.0.1', 60937)
Connection opened: ('127.0.0.1', 60938)
Connection opened: ('127.0.0.1', 60939)
Connection opened: ('127.0.0.1', 60940)
Connection opened: ('127.0.0.1', 60941)
Connection opened: ('127.0.0.1', 60942)
Connection opened: ('127.0.0.1', 60943)
Connection opened: ('127.0.0.1', 60944)
---------------------------2024-02-12 17:43:02.337268 (total:8, rounds:1)---------------------------
[ 1] | 127.0.0.1:60937 | Speed Rx:32.00 K/s Tx:32.00 K/s | Total Rx:235.00 K Tx:235.00 K | duration: 7s
[ 2] | 127.0.0.1:60938 | Speed Rx:32.00 K/s Tx:32.00 K/s | Total Rx:235.00 K Tx:234.00 K | duration: 7s
[ 3] | 127.0.0.1:60939 | Speed Rx:32.00 K/s Tx:32.00 K/s | Total Rx:235.00 K Tx:234.00 K | duration: 7s
[ 4] | 127.0.0.1:60940 | Speed Rx:32.00 K/s Tx:32.00 K/s | Total Rx:235.00 K Tx:234.00 K | duration: 7s
[ 5] | 127.0.0.1:60941 | Speed Rx:32.00 K/s Tx:32.00 K/s | Total Rx:235.00 K Tx:234.00 K | duration: 7s
[ 6] | 127.0.0.1:60942 | Speed Rx:32.00 K/s Tx:32.00 K/s | Total Rx:234.00 K Tx:234.00 K | duration: 7s
[ 7] | 127.0.0.1:60943 | Speed Rx:32.00 K/s Tx:32.00 K/s | Total Rx:234.00 K Tx:234.00 K | duration: 7s
[ 8] | 127.0.0.1:60944 | Speed Rx:32.00 K/s Tx:32.00 K/s | Total Rx:234.00 K Tx:234.00 K | duration: 7s
Average Read Speed: 32765.0 bytes/s, Average Write Speed: 32752.88 bytes/s
Disguise as HTTPS server with whitelist
Any connection beyond whitelist will be served by a mock https server. Real service can thus be hided.
For example, you can protect your Scurrying Squirrel against attack from Grim Foolish Weasel.
> simple-proxy -rp 8388 -lp 443 -g --run-mock-tls-server -wl=<your ip>,<your wife's ip>,<your friend's wife's ip>
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
simple-proxy-0.0.3.tar.gz
(12.8 kB
view details)
Built Distribution
File details
Details for the file simple-proxy-0.0.3.tar.gz
.
File metadata
- Download URL: simple-proxy-0.0.3.tar.gz
- Upload date:
- Size: 12.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b7b67c8b3c0fe14434023c9b4152a3802e62abec8634043434500c2a52fbe67 |
|
MD5 | a03ebfdc69e4a38b98bb1a62e01269a7 |
|
BLAKE2b-256 | 179874d09ce39bfa33f84d0844d2d8985e71f6f227076f9212caef9dda01478a |
File details
Details for the file simple_proxy-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: simple_proxy-0.0.3-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2f22d3bbf74a9803cef691b59bbc29452722bf8e1f4e18c278f22f5dcd7c6e5d |
|
MD5 | 3a2e2ce4a5d82bacb7afc8317a67fc0b |
|
BLAKE2b-256 | a27b3ee9cf0038e99a005acebbeee507ff4e8bb890959d80b99b41d2a0cb3237 |