Skip to content

mauricelambert/SimpleHttpProxy

Repository files navigation

SimpleHttpProxy logo

SimpleHttpProxy

Description

This package implements a simple and partially asynchronous HTTP(S) proxy.

Requirements

This package require:

  • python3
  • python3 Standard Library

Installation

pip install SimpleHttpProxy

Usages

Default proxy printer using command line

python3 SimpleHttpProxy.py -h
python3 ProxyPrinter.pyz --help

ProxyPrinter --interface 0.0.0.0 --port 8012 --unsecure
ProxyPrinter -i 0.0.0.0 -p 8012 -s

Custom proxy using Python

Proxy Server:

from SimpleHttpProxy import AbcHttpProxy

class ProxyRestrict(AbcHttpProxy):
	def handle_request(self, data: bytes) -> bytes:
		if b'://www.ruby-lang.org' in data.split(b"\r\n", 1)[0]:
			return data.replace(b'www.ruby-lang.org', b'www.python.org', 2)
		return data
	def handle_response(self, data: bytes) -> bytes:
		return data.replace(b'www.ruby-lang.org', b'www.python.org')

proxy = ProxyRestrict()
proxy.start()

Python Client:

from urllib.request import Request, urlopen
r = Request("http://ruby-lang.org/")
r.set_proxy('127.0.0.1:8012', 'http')
print(urlopen(r).read()[3150:4000].decode())

Screenshot

Firefox proxy configuration

Default: Proxy Printer

Custom: Proxy Restriction

Links

Licence

Licensed under the GPL, version 3.