Twisted ProxyAgent : authentification basique pour HTTP en clair
Envoyez une requête HTTP en clair authentifiée via un Twisted ProxyAgent avec des en-têtes de requête à valeurs d'octets.
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.