Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- import http.server
- import socketserver
- from urllib import request,parse,error
- PORT=3345
- class Proxy(http.server.BaseHTTPRequestHandler):
- def do_POST(self):
- newpath = "http://localhost:3344" + self.path
- req = request.Request(newpath)
- for h in self.headers.items():
- req.add_header(h[0],h[1])
- inputdata = ''
- contlen = self.headers.get('Content-length')
- enc = self.headers.get('Transfer-Encoding')
- if contlen:
- inputdata = self.rfile.read(int(contlen))
- elif enc == 'chunked':
- line = self.rfile.readline()
- inputdata = line
- readsize = int(line,16)
- while(readsize > 0):
- inputdata = inputdata + self.rfile.read(readsize)
- inputdata = inputdata + self.rfile.readline()
- line = self.rfile.readline()
- inputdata = inputdata + line
- readsize = int(line,16)
- else:
- inputdata = ''
- req.data = inputdata
- try:
- result = request.urlopen(req)
- except error.HTTPError as err:
- self.send_error(err.code,err.reason)
- return
- self.send_response(result.status)
- for h in result.getheaders():
- self.send_header(h[0],h[1])
- self.end_headers()
- resdata = result.read()
- self.wfile.write(resdata)
- # pdb.set_trace()
- httpd = socketserver.ForkingTCPServer(('',PORT),Proxy)
- try:
- httpd.serve_forever()
- except (Exception,KeyboardInterrupt):
- httpd.shutdown()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement