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.

Source Distribution

cgiproxy-20.11.14.tar.gz (5.1 kB view hashes)

Uploaded source

Built Distributions

cgiproxy-20.11.14-py3-none-any.whl (9.2 kB view hashes)

Uploaded py3

cgiproxy-20.11.14-py2-none-any.whl (9.2 kB view hashes)

Uploaded py2

Supported by

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