Skip to content

Latest commit

 

History

History
39 lines (27 loc) · 1.31 KB

README.md

File metadata and controls

39 lines (27 loc) · 1.31 KB

A small whitelisting HTTP CONNECT proxy

This is a small HTTP CONNECT proxy, with a target host whitelist.

Implemented in Python on top of trio and h11, it is written for ease of comprehension and auditing. (This makes it easy to adopt in situations where you'd want such a proxy.)

A secondary goal is to be flexible. It can be used in two ways:

  1. As a stand-alone proxy. Just run the module:

    python -m whitelisting_proxy --address localhost --port 8080 --config example-config.json
  2. As a library. The proxy (WhitelistingProxy) always runs in Trio's event loop, but a wrapper (SynchronousWhitelistingProxy) lets you run it from normal code.

    Make it your own!

For example of (2), see whitelisting_proxy/__main__.py.

Performance

The proxy is single-threaded. On an Intel i7-7700HQ @ 2.80GHz, it handles ~560 connections per second. Not much, but enough for many use cases.

License

This project is MIT licensed. TrioHTTPConnection from adapter.py is based on h11's example server, by Nathaniel J. Smith. The rest is written by Antun Maldini.