«Очень простой пример прокси-сервера, к которому можно подключиться, а затем он сам попытается подключиться к переданному ему адресу». Это практически определение HTTP-прокси.
Здесь есть действительно простой пример прокси: http://effbot.org/librarybook/simplehttpserver.htm
Суть его всего в 3 строки :
class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
self.copyfile(urllib.urlopen(self.path), self.wfile)
Таким образом, это SimpleHTTPRequestHandler
, который в ответ на запрос GET открывает URL-адрес в пути (запрос к прокси-серверу обычно выглядит как "GET http: // example .com / ", а не как" GET /index.html "). Затем он просто копирует все, что может прочитать с этого URL, в ответ.
Заметим, что это действительно минимально. Я считаю, что это вообще не касается заголовков.
Кстати: path
задокументировано на http://docs.python.org/library/basehttpserver.html . Он был установлен до того, как был вызван ваш метод do*
.
proxpy выглядит довольно многообещающе, очень просто настроить запросы и ответы.
Из витой вики
from twisted.web import proxy, http
from twisted.internet import reactor
from twisted.python import log
import sys
log.startLogging(sys.stdout)
class ProxyFactory(http.HTTPFactory):
protocol = proxy.Proxy
reactor.listenTCP(8080, ProxyFactory())
reactor.run()