ProxyAgent se connecte via l'endpoint qui lui est fourni. Pour une requête HTTP en clair et un proxy qui accepte l'authentification basique, placez l'identifiant de connexion au proxy dans l'en-tête Proxy-Authorization de cette requête.

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)

Cet extrait suppose que l'application dispose déjà de son reactor. La méthode, l'URI et les données d'en-tête illustrées utilisent des octets. Conservez les identifiants réels dans la source d'identifiants de l'application ; le texte de remplacement montre seulement comment l'en-tête est construit. Base64 est un encodage, donc la confidentialité dépend de la connexion qui le transporte.

Le Deferred renvoyé produit un objet de réponse. Recevoir cet objet ne collecte pas le corps de la réponse ; lisez-le via l'interface documentée de lecture du corps et gérez les échecs asynchrones. Le délai de l'endpoint borne l'établissement de la connexion, pas la durée de vie complète de la réponse.

L'exemple utilise volontairement une destination HTTP. Il n'ajoute pas de négociation CONNECT pour HTTPS en changeant simplement le schéma de l'URI.

Articles similaires