''' Small http proxy, which can add cookies. ''' from __future__ import absolute_import from __future__ import print_function import sys, SimpleHTTPServer, SocketServer, httplib class globals: headers = [] status = 302 class RequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): def do_GET(self): host = self.headers["Host"] #host = host.split(":", 1)[0] print(host, self.path) conn = httplib.HTTPConnection(self.connect_to, timeout=60) conn.request("GET", self.path, headers=globals.headers) resp = conn.getresponse() globals.status = resp.status self.send_response(resp.status) self.end_headers() while True: try: buf = resp.read(4096) except socket.error as error: (ec, es) = error.args if ec==104: # connection reset by peer berak raise print(len(buf)) if not buf: break self.wfile.write(buf) class TCPServer(SocketServer.ThreadingTCPServer): allow_reuse_address = True class proxy: def __init__(self, port, host): self.handler = RequestHandler self.handler.connect_to = host self.httpd = TCPServer(("", port), self.handler) while str(globals.status)[0]=='3': self.httpd.handle_request() print(globals.status, type(globals.status)) if __name__ == "__main__": globals.headers = dict( Cookie="TEST=ABCDEF" ) proxy(9999, host=sys.argv[1])