Skip to main content

The simple HTTP proxy.

Project description

CGI Proxy

Build Status License PyPI Version Python Versions PyPI Downloads PyPI Format PyPI Status

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.

Files for cgiproxy, version 20.11.14
Filename, size File type Python version Upload date Hashes
Filename, size cgiproxy-20.11.14-py2-none-any.whl (9.2 kB) File type Wheel Python version py2 Upload date Hashes View
Filename, size cgiproxy-20.11.14-py3-none-any.whl (9.2 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size cgiproxy-20.11.14.tar.gz (5.1 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page