Skip to main content

A tiny HTTP proxy implementation

Project description

This module implements a tiny HTTP proxy by extending BaseHTTPServer. Supports the GET, HEAD, POST, PUT, DELETE and CONNECT methods.

The latest version can be installed via PyPI:

$ pip install httproxy

or:

$ easy_install httproxy

The source code repository and issue tracker are maintained on GitHub.

Quickstart

Usage:

httproxy [options]
httproxy [options] <allowed-client> ...

Options:

-h, --help                   Show this screen.
--version                    Show version and exit.
-H, --host HOST              Host to bind to [default: 127.0.0.1].
-p, --port PORT              Port to bind to [default: 8000].
-l, --logfile PATH           Path to the logfile [default: STDOUT].
-i, --pidfile PIDFILE        Path to the pidfile [default: httproxy.pid].
-d, --daemon                 Daemonize (run in the background). The
                             default logfile path is httproxy.log in
                             this case.
-c, --configfile CONFIGFILE  Path to a configuration file.
-v, --verbose                Log headers.

To start the proxy server and bind it to port 22222 (the port on which it will listen and accept connections):

httproxy -p 22222

To start the proxy server, bind it to port 22222 and tell it to log all requests to the file httproxy.log:

httproxy -p 22222 -l httproxy.log

To start the proxy server so it only allows connections from IP 123.123.123.123:

httproxy 123.123.123.123

To start the proxy server bound to port 22222, log to file httproxy.log and run the server in the background (as a daemon):

httproxy -p 22222 -l httproxy.log -d

Configuration file

Every option stated as a command-line argument can be passed using a configuration file. httproxy looks for the following files to read configuration:

  • /etc/httproxy/config

  • $HOME/.httproxy/config (or %HOME%\.httproxy\config on Windows)

  • the value specified in --configfile on command-line

The names of the settings in the main section are derived from the long command line option names.

The allowed-clients section holds a list of hostnames that can access the proxy, one hostname per line. Remove this section or leave empty to allow any client to connect.

An example file:

[main]
host = localhost
port = 8011
logfile = /Users/ambv/.httproxy/log
pidfile = /Users/ambv/.httproxy/pid
daemon = yes
verbose = yes

[allowed-clients]
localhost
192.168.0.1

Note: command-line options have precedence over configuration file settings.

Optional dependencies

If you install setproctitle, the name of the process reported by ps will be more descriptive.

If you install psutil, httproxy will be able to automatically remove stale pidfiles on startup.

Change Log

0.9.0

  • ability to read configuration from a file (--configfile)

  • ability to specify the address the proxy will bind to (--host)

  • ability to log headers sent and received (--verbose)

  • better process management: pidfile support, a more descriptive process title (with the optional setproctitle dependency)

  • fixed spurious [Errno 54] Connection reset by peer tracebacks

  • properly shuts down when receiving SIGHUP, SIGINT or SIGTERM

  • major code refactoring

  • compatible with Python 2.6 and 2.7 only: requires docopt and configparser

0.3.1

  • added rudimentary FTP file retrieval

  • added custom logging methods

  • added code to make it run as a standalone application

Upgraded by Mitko Haralanov in 2009.

0.2.1

Authors

Script based on work by Suzuki Hisao and Mitko Haralanov, currently maintained by Łukasz Langa.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

httproxy-0.9.0.tar.gz (9.1 kB view details)

Uploaded Source

File details

Details for the file httproxy-0.9.0.tar.gz.

File metadata

  • Download URL: httproxy-0.9.0.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for httproxy-0.9.0.tar.gz
Algorithm Hash digest
SHA256 bf8381db311c8d2f1256ba16b77b1a9f9345a924e3fc50b436b59103082e66b9
MD5 5733dc93562b372aa999a7a3e12c8a42
BLAKE2b-256 8e74790298ec094f08a42c85ce826b9db1cedb64ac382062c0c1fa6eb30c531f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page