proxy HTTP Python seriamente semplice?

Ho cercato ovunque e ho trovato milioni di server proxy Python ma nessuno fa esattamente quello che vorrei (penso: s)

Ho avuto un po ‘di esperienza con Python in generale, ma sono abbastanza nuovo nel mondo dei segreti oscuri del protocollo HTTP.

Quello che penso potrebbe essere utile sarebbe un esempio di proxy molto semplice a cui è ansible connettersi e che quindi cercherà di connettersi all’indirizzo che gli è stato trasmesso.

Inoltre, penso che ciò che mi ha confuso è tutto ciò che le cose nascoste stanno facendo, ad esempio se la class eredita da BaseHTTerver.BaseHTTPRequestHandler cosa accade esattamente quando viene richiesta una pagina, come in molti degli esempi che ho trovato non c’è alcun riferimento al percorso variabile poi improvvisamente puf! self.path è utilizzato in una funzione. presumo che sia stato ereditato, ma come finisce con il percorso usato?

mi spiace se questo non ha molto senso, come la mia idea del mio problema è probabilmente criptato 🙁

se riesci a pensare a qualcosa che renderebbe la mia domanda più chiara per favore, ti suggerisco di aggiungerla. xxx

Modificare:

Inoltre, un collegamento a una spiegazione dei processi dettagliati attraverso i quali il proxy gestisce la richiesta, richiede la pagina (come leggere / modificare i dati a questo punto) e lo passa al richiedente originale sarebbe molto apprezzato xxxx

“un esempio di proxy molto semplice a cui è ansible connettersi e che quindi cercherà di connettersi all’indirizzo che gli è stato assegnato”. Questa è praticamente la definizione di un proxy HTTP.

C’è un esempio di proxy molto semplice qui: http://effbot.org/librarybook/simplehttpserver.htm

Il nucleo di esso è solo 3 linee:

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

Quindi è un SimpleHTTPRequestHandler che, in risposta a una richiesta GET, apre l’URL nel percorso (una richiesta a un proxy di solito appare come “GET http://example.com/ “, non come “GET /index.html”) . Quindi copia semplicemente tutto ciò che può leggere da quell’URL alla risposta.

Notare che questo è veramente minimo. Credo che non si tratti affatto delle intestazioni.

BTW: il path è documentato su http://docs.python.org/library/basehttpserver.html . È stato impostato prima do* venisse chiamato il metodo do* .

Dal Wiki contorto

 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 sembra piuttosto promettente, è molto semplice modificare richieste e risposte.