Skip to content

Instantly share code, notes, and snippets.

@angeloped
Last active September 12, 2019 03:28
Show Gist options
  • Save angeloped/66598d5420fb5aaffc61f7d2ed4041cf to your computer and use it in GitHub Desktop.
Save angeloped/66598d5420fb5aaffc61f7d2ed4041cf to your computer and use it in GitHub Desktop.
A truly minimal HTTP-Tor proxy.
# a truly minimal HTTP-Tor proxy
import sys
major_version = sys.version_info.major
if major_version == 2:
import SocketServer
import SimpleHTTPServer
elif major_version == 3:
import http.server as SimpleHTTPServer
import socketserver as SocketServer
import requests
PROX_LPORT = 1232
def get_tor_session():
session = requests.session()
# Tor uses the 9050 port as the default socks port
session.proxies = {'http': 'socks5://127.0.0.1:9050', 'https': 'socks5://127.0.0.1:9050'}
return session
class LocalProxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
# Make a request through the Tor connection
session = get_tor_session()
self.wfile.write(session.get(self.path).text.encode())
httpd = SocketServer.ForkingTCPServer(('', PROX_LPORT), LocalProxy)
print("serving at port", PROX_LPORT)
httpd.serve_forever()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment