Pythonで単純なHTTPプロキシを作成しようとしています。これは私のコードです:
import BaseHTTPServer
import urllib2
import threading
HOST_NAME="localhost"
PORT_NUMBER=9090
class RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def handle_get_async(self):
opener = urllib2.build_opener()
#opener.addheaders = self.headers.items()
response = opener.open(self.path)
response_content=response.read()
response.close()
self.send_response(200)
self.send_header("Content-type",response.info().type)
self.end_headers()
self.wfile.write(response_content)
def handle_head_async(s):
s.send_responde(200)
s.send_Header("Content-type","text/html")
s.end_headers()
def do_HEAD(s):
thread = threading.Thread(target=self.handle_head_async)
thread.start()
thread.join()
def do_GET(self):
thread = threading.Thread(target=self.handle_get_async)
thread.start()
thread.join()
if __name__ == '__main__':
server_class = BaseHTTPServer.HTTPServer
httpd = server_class((HOST_NAME, PORT_NUMBER), RequestHandler)
httpd.serve_forever()
したがって、すべて正常に動作しますが、 opener.addheaders = self.headers.items() を使用してブラウザーから送信されたヘッダーをコピーし、それを新しいリクエストにコピーすると、ブラウザーで次のような奇妙な文字を受け取るだけです:
Ô½Yo#I¶&ø^¿ÂÓ«:¯”)JÜ—PJn'(q'ZCQ^Nw#ÝEßä)**€z`€æi€™—‹žy¨Ûfè—Æ4ptþ‰ê·ÂEãöüŒ9ÇÌÝé\œŠHeõB$Ý –sŽ}fvì˜Ùq³Ÿ¾«uªƒÛnS];þÍOøÅi¢1>âeÂsª|ÄD‰MsÂs'&:Îo˜âƒÃcb"ÊÇ?éÄ9Im‡¸G¼çŽEž;8þÉ'lÕrGž!¹ªipĘžhž£ìˆ»ÃÀáŽO¦½¥3mNæT ‡#>?©£™jÈælß&žj“¦ø<ßý¸¶óþïêÆôï>ì w?Í!áñÈO?ÿøÇŸ‡;ðâ?…¢|äÅñÉR-"¸æ„ü¾|óðỔ:ñHEÎ[c~×G˜ »ò»³®Ñq34aAÉ?8 °õ?8‰äHö~?vÙ$v"9–~O<{”Èø?S‡Ä</p>
誰かが何が問題なのか考えていますか?