https://github.com/datamart/cgi-proxy
🌐 Python Simple CGI HTTP Proxy.
https://github.com/datamart/cgi-proxy
Last synced: 8 months ago
JSON representation
🌐 Python Simple CGI HTTP Proxy.
- Host: GitHub
- URL: https://github.com/datamart/cgi-proxy
- Owner: Datamart
- License: apache-2.0
- Created: 2018-08-01T01:30:18.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2024-01-15T17:14:26.000Z (over 2 years ago)
- Last Synced: 2025-03-14T12:06:16.862Z (over 1 year ago)
- Language: Python
- Homepage: https://pypi.org/project/cgiproxy/
- Size: 85 KB
- Stars: 6
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# CGI Proxy
[](http://www.apache.org/licenses/LICENSE-2.0.html)
[](https://pypi.org/project/cgiproxy/)
[](https://pypi.org/project/cgiproxy/)
[](https://pypi.org/project/cgiproxy/)
[](https://pypi.org/project/cgiproxy/)
[](https://pypi.org/project/cgiproxy/)
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`:
```bash
$ 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
```python
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'))
```