ProxyAgent si connette attraverso l'endpoint che gli viene fornito. Per una richiesta HTTP semplice e un proxy che accetta l'autenticazione di base, mettete le credenziali del proxy nell'intestazione Proxy-Authorization di quella richiesta.

import base64
from twisted.internet.endpoints import TCP4ClientEndpoint
from twisted.web.client import ProxyAgent
from twisted.web.http_headers import Headers

endpoint = TCP4ClientEndpoint(reactor, 'proxy.example', 8080,
                              timeout=5)
agent = ProxyAgent(endpoint, reactor=reactor)
token = base64.b64encode(b'alice:REPLACE_WITH_PROXY_PASSWORD')
headers = Headers({b'Proxy-Authorization': [b'Basic ' + token]})
pending = agent.request(b'GET', b'http://example.com/', headers)

Questo frammento presuppone che l'applicazione abbia già il proprio reactor. Il metodo, l'URI e i dati di intestazione mostrati usano byte. Conservate le credenziali reali nella sorgente delle credenziali dell'applicazione; il segnaposto mostra solo come viene costruita l'intestazione. Base64 è una codifica, quindi la riservatezza dipende dalla connessione che la trasporta.

Il Deferred restituito produce un oggetto di risposta. Ricevere quell'oggetto non raccoglie il corpo della risposta; leggetelo tramite l'interfaccia documentata di lettura del corpo e gestite i fallimenti asincroni. Il timeout dell'endpoint limita l'instaurazione della connessione, non l'intera vita della risposta.

L'esempio usa intenzionalmente una destinazione HTTP. Non aggiunge una negoziazione CONNECT per HTTPS solo cambiando lo schema dell'URI.

Articoli correlati