script - Seriamente simple proxy HTTP de Python?
proxy python script (3)
Esta pregunta ya tiene una respuesta aquí:
- Proxy Python .. Uno simple! [cerrado] 2 respuestas
He buscado en todas partes y he encontrado millones de servidores proxy Python, pero ninguno hace exactamente lo que me gustaría (creo: s)
He tenido bastante experiencia con python en general, pero soy bastante nuevo en el mundo de los profundos secretos oscuros del protocolo HTTP.
Lo que creo que podría ser útil sería un ejemplo de proxy muy simple al que se pueda conectar y que luego intentará conectarse a la dirección que se le haya pasado.
Además, creo que lo que me ha estado confundiendo es todo lo que hacen las cosas ocultas, por ejemplo, si la clase hereda de BaseHTTPServer.BaseHTTPRequestHandler qué sucede exactamente cuando se solicita una página, como en muchos de los ejemplos que he encontrado no hay ninguna referencia a la ruta variable entonces de repente poof! self.path se utiliza en una función. Supongo que se ha heredado, pero ¿cómo termina con la ruta utilizada?
lo siento si eso no tuvo mucho sentido, ya que mi idea de mi problema es probablemente revuelta :(
Si puede pensar en algo que aclare mi pregunta, por favor, sugiera que la agregue. xxx
Editar:
Además, se agradecería enormemente un enlace a una explicación de los procesos detallados a través de los cuales el proxy maneja la solicitud, solicita la página (cómo leer / modificar los datos en este punto) y la pasa al solicitante original xxxx
"un ejemplo de proxy muy simple que se puede conectar y luego intentará conectarse a la dirección que se le pasa". Esa es prácticamente la definición de un proxy HTTP.
Aquí hay un ejemplo de proxy muy simple: http://effbot.org/librarybook/simplehttpserver.htm
El núcleo de esto es sólo 3 líneas:
class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
self.copyfile(urllib.urlopen(self.path), self.wfile)
Así que es un SimpleHTTPRequestHandler
que, en respuesta a una solicitud GET, abre la URL en la ruta (una solicitud a un proxy normalmente se parece a "GET http://example.com/ ", no a "GET /index.html") . Luego simplemente copia lo que pueda leer de esa URL a la respuesta.
Notar que esto es realmente mínimo. No se trata de encabezados, creo.
Por cierto: la path
se documenta en http://docs.python.org/library/basehttpserver.html . Se configuró antes de llamar a su método do*
.
De la 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()
proxpy parece bastante prometedor, es muy sencillo modificar las solicitudes y respuestas.