Подтвердить что ты не робот

Серьезно простой прокси-сервер python HTTP?

Я везде искал и нашел миллионы прокси-серверов python, но никто не делает точно, что мне хотелось бы (я думаю: s)

У меня был довольно большой опыт работы с python в целом, но я довольно новичок в мире глубоких темных секретов протокола HTTP.

То, что, по моему мнению, могло бы быть полезным, было бы очень простым прокси-примером, к которому можно подключиться, и сам попытается подключиться к адресу, переданному ему.

Кроме того, я думаю, что меня сбило с толку - это все, что скрывает скрытый материал. если класс наследует от BaseHTTPServer.BaseHTTPRequestHandler то, что точно происходит, когда запрашивается страница, как и во многих примерах, которые я нашел, нет ссылки на переменную пути, а затем вдруг poof! self.path используется в функции. im, предполагая, что он унаследован, но как он заканчивается с использованием пути?

Мне жаль, если это не имеет большого смысла, так как моя идея моей проблемы, вероятно, скремблирована: (

если вы можете думать о чем-либо, что сделает мой вопрос более ясным, пожалуйста, предложите добавить его. ххх

Edit:

Кроме того, ссылка на объяснение подробных процессов, через которые прокси обрабатывает запрос, запрашивает страницу (как читать/модифицировать данные в этой точке) и передает ее исходному реквестору, будет с большой благодарностью xxxx

4b9b3361

Ответ 1

"- очень простой пример прокси, к которому можно подключиться, и сам попытается подключиться к адресу, переданному ему." Это практически определение HTTP-прокси.

Здесь действительно простой пример прокси: http://effbot.org/librarybook/simplehttpserver.htm

Ядро всего 3 строки:

class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def do_GET(self):
        self.copyfile(urllib.urlopen(self.path), self.wfile)

Итак, a SimpleHTTPRequestHandler, который в ответ на запрос GET открывает URL-адрес в пути (запрос к прокси обычно выглядит как "GET http://example.com/", а не как "GET/index.html" ). Затем он просто копирует все, что он может прочитать из этого URL-адреса, в ответ.

Отметьте, что это действительно минимально. Думаю, что это не касается заголовков.

BTW: path документируется на http://docs.python.org/library/basehttpserver.html. Он был установлен до того, как был вызван метод do*.

Ответ 2

Из twisted Wiki

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()

Ответ 3

proxpy выглядит довольно многообещающим, он очень прост в настройке запросов и ответов.