Skip to main content

Ma`Proxy is a simple TCP proxy based on Tornado.

Well, maybe not that simple, since it supports:

  • TCP -> TCP

    simple reverse proxy. Whatever data goes in , goes out

  • TCP -> SSL

    proxy to encrypt incoming data. a.k.a stunnel

  • SSL -> TCP

    proxy to decrypt incoming data a.k.a SSL-terminator or SSL-decryptor

  • SSL- > SSL

    whatever gets in will be decrypted and then encrypted again

  • Each SSL can be used with SSL certificates. including client-certificates !!

Examples:

// update (Aug 2016) // // It seems that google now returning “HTTP 304” (page moved), // Hence,the google examples won’t work. // In addition, the examples won’t work with sites that check the “HOST” header (since when you connect locally the browser will send HOST: 127.0.0.1)

Let’s start with the simplest example - no bells and whistles - a simple TCP proxy:

#!/usr/bin/env python
import tornado.ioloop
import maproxy.proxyserver

# HTTP->HTTP: On your computer, browse to "http://127.0.0.1:81/" and you'll get http://www.google.com
server = maproxy.proxyserver.ProxyServer("www.google.com",80)
server.listen(81)
print("http://127.0.0.1:81 -> http://www.google.com")
tornado.ioloop.IOLoop.instance().start()

We are creating a proxy (reverse proxy, to be more accurate) that listens locally on port 81 (0.0.0.0:81) and redirect all calls to www.google.com (port 80) . Note that: 1. This is NOT an HTTP-proxy , since it operates in the lower TCP layer . this proxy has nothing to do with HTTP 2. we are actually listening on all the IP addresses, not only on 127.0.0.1 .

Now, Let’s say that you’d like to listen on a “clear” (non-encrypted) connection but connect to an SSL website, for example - create a proxy http://127.0.0.1:82 -> https://127.0.0.1:443 , simply update the “server” line:

#!/usr/bin/env python
import tornado.ioloop
import maproxy.proxyserver

# HTTP->HTTP: On your computer, browse to "http://127.0.0.1:81/" and you'll get http://www.google.com
server = maproxy.proxyserver.ProxyServer("www.google.com",443,server_ssl_options=True)
server.listen(82)
print("http://127.0.0.1:82 -> https://www.google.com",)
tornado.ioloop.IOLoop.instance().start()

Alternatively, you can listen on SSL port and redirect the connection to a clear-text server. In order to listen on SSL-port, you need to specify SSL server-certificates as “client_ssl_options”:

#!/usr/bin/env python
import tornado.ioloop
import maproxy.proxyserver

# HTTPS->HTTP
ssl_certs={     "certfile":  "./certificate.pem",
                "keyfile": "./privatekey.pem" }
# "client_ssl_options=ssl_certs" simply means "listen using SSL"
server = maproxy.proxyserver.ProxyServer("www.google.com",80,
                                         client_ssl_options=ssl_certs)
server.listen(83)
print("https://127.0.0.1:83 -> http://www.google.com")
tornado.ioloop.IOLoop.instance().start()

In the “demos” section of the source-code, you will also find:

  • how to connect using SSL client-certificate

  • how to inherit the “Session” object (that we internally use) and create a logging-proxy (proxy that logs everything) .

Installation:

pip install maproxy

Source Code: https://github.com/zferentz/maproxy

Contact Me: zvika d-o-t ferentz a-t gmail d,o,t com (if you can’t figure it out - please don’t contact me :) )

Download files

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

Source Distribution

maproxy-0.0.12.zip (23.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

maproxy-0.0.12.win-amd64.exe (147.1 kB view details)

Uploaded Source

maproxy-0.0.12.win32.exe (201.9 kB view details)

Uploaded Source

maproxy-0.0.12-py3.4.egg (18.9 kB view details)

Uploaded Egg

maproxy-0.0.12-py2.7.egg (18.5 kB view details)

Uploaded Egg

File details

Details for the file maproxy-0.0.12.zip.

File metadata

  • Download URL: maproxy-0.0.12.zip
  • Upload date:
  • Size: 23.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for maproxy-0.0.12.zip
Algorithm Hash digest
SHA256 f584cc3d29ba4168ef0d4d205c59c6331ca9b44104d0c160af6898dc4bf830e1
MD5 61023682dfda83b7bd9ec08d5bf951a2
BLAKE2b-256 2e1241e87a13b3e64373f73029ad1e826084afa64d4cdfa17baadc3ccde2ee02

See more details on using hashes here.

File details

Details for the file maproxy-0.0.12.win-amd64.exe.

File metadata

File hashes

Hashes for maproxy-0.0.12.win-amd64.exe
Algorithm Hash digest
SHA256 200658719df20e8b716a1723603d19b390c247e2447f64133c632c309afd64a1
MD5 b6e2980740b3debd7334b12b1c10561f
BLAKE2b-256 28cec58a0f5a6bbd9a25ef50473dcd52830a4e5222f567190b680625f19e52e9

See more details on using hashes here.

File details

Details for the file maproxy-0.0.12.win32.exe.

File metadata

  • Download URL: maproxy-0.0.12.win32.exe
  • Upload date:
  • Size: 201.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for maproxy-0.0.12.win32.exe
Algorithm Hash digest
SHA256 5ac22f1d3156f9bddabc98c166ce40b6374b4d6a4d7a443c78d21752f3523bcb
MD5 3a1d19b4a9d6ffcef28aac616141294f
BLAKE2b-256 26561208e5b15ba647382714090633536a2e1cc5d8bd30d4a7eb74fdda8c1212

See more details on using hashes here.

File details

Details for the file maproxy-0.0.12-py3.4.egg.

File metadata

  • Download URL: maproxy-0.0.12-py3.4.egg
  • Upload date:
  • Size: 18.9 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for maproxy-0.0.12-py3.4.egg
Algorithm Hash digest
SHA256 a60a6945944f0e31e077df98c3c3595761952a4b033533334395036004fcb2cf
MD5 4735eaefbc219056ac5ffee3a221254f
BLAKE2b-256 270d7a7f55686d74ded659820cc3d2500bc3c639ba991a5f5f30e4fd0fa32be3

See more details on using hashes here.

File details

Details for the file maproxy-0.0.12-py2.7.egg.

File metadata

  • Download URL: maproxy-0.0.12-py2.7.egg
  • Upload date:
  • Size: 18.5 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for maproxy-0.0.12-py2.7.egg
Algorithm Hash digest
SHA256 af4c3f5549457558d2232866bff25ea7d9a849f59177a83a67bf6da564a13578
MD5 27dd32dbe32a6168c0bc5db213ebfde5
BLAKE2b-256 81f5a42374faa009601fafb6cfea215d07e043c2982b9bd681587d5ba09177b3

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.12 This release

5 files

0.0.11

4 files

0.0.10

4 files

0.0.9

4 files

0.0.8

4 files

0.0.7

3 files

0.0.6

3 files

0.0.5

3 files

0.0.4

3 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page