Skip to main content

The simple HTTP proxy.

Project description

CGI Proxy Build Status License PyPI Version Python Versions

Simple CGI HTTP Proxy.

  • Sets the X-Forwarded-For header with the client IP address;
  • Sets the User-Agent header with the client' User-Agent string;
  • Decodes gzip-ed content;
  • Prints all errors to stderr;
  • Uses urllib2 for Python 2 and urllib.request for Python 3.

Installation

Install from PyPI using pip:

$ pip install cgiproxy

Methods

do_get(url, headers=None)

Performs GET request.

Arguments:

  • url - The request URL as str.
  • headers - Optional HTTP request headers as dict.

Returns:

  • A tuple of (content, status_code, response_headers)

do_head(url, headers=None)

Performs HEAD request.

Arguments:

  • url - The request URL as str.
  • headers - Optional HTTP request headers as dict.

Returns:

  • A tuple of (content='', status_code, response_headers)

do_post(url, data=None, headers=None)

Performs POST request. Converts query to POST params if data is None.

Arguments:

  • url - The request URL as str.
  • data - Optional HTTP POST data as URL-encoded str.
  • headers - Optional HTTP request headers as dict.

Returns:

  • A tuple of (content, status_code, response_headers)

get_http_status(url, headers=None)

Gets HTTP status code.

Arguments:

  • url - The request URL as str.
  • headers - Optional HTTP request headers as dict.

Returns:

  • An HTTP status code.

get_response_headers(url, headers=None)

Gets HTTP response headers.

Arguments:

  • url - The request URL as str.
  • headers - Optional HTTP request headers as dict.

Returns:

  • An HTTP response headers as dict.

Examples

import cgiproxy

status = cgiproxy.get_http_status('https://www.pageportrait.com/')
print(200 == status)

headers = cgiproxy.get_response_headers('https://komito.net/')
print(headers.get('content-type'))

content, status, headers = cgiproxy.do_head('https://www.dtm.io/')
print('' == content)
print(200 == status)
print(headers.get('content-type'))

content, status, headers = cgiproxy.do_get('https://www.dtm.io/', headers={
    'User-Agent': 'Mozilla/5.0 (compatible; Darwin/18.2.0) cgiproxy/18.12',
    'X-Custom-Header': 'value'
})
print('' != content)
print(200 == status)
print(headers.get('content-type'))

content, status, headers = cgiproxy.do_post('https://example.com/', data='aaa%3Dbbb%26ccc%3Dddd')
print('' != content)
print(200 == status)
print(headers.get('content-type'))

Project details


Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
cgiproxy-18.12.28-py3-none-any.whl (9.1 kB) Copy SHA256 hash SHA256 Wheel py3
cgiproxy-18.12.28.tar.gz (4.8 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page