ProxyAgent verbindet über den ihm übergebenen Endpoint. Bei einer einfachen HTTP-Anfrage und einem Proxy, der Basic-Authentifizierung akzeptiert, gehört die Proxy-Anmeldung in den Proxy-Authorization-Header dieser Anfrage.

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)

Dieses Fragment setzt voraus, dass die Anwendung ihren Reactor bereits besitzt. Methode, URI und die gezeigten Headerdaten verwenden Bytes. Echte Zugangsdaten gehören in die Credential-Quelle der Anwendung; der Platzhalter zeigt nur, wie der Header aufgebaut wird. Base64 ist eine Kodierung, die Vertraulichkeit hängt also von der Verbindung ab, die sie transportiert.

Das zurückgegebene Deferred liefert ein Response-Objekt. Der Empfang dieses Objekts liest den Response-Body nicht aus; lesen Sie ihn über die dokumentierte Schnittstelle zum Lesen des Bodys und behandeln Sie asynchrone Fehler. Das Timeout des Endpoints begrenzt den Verbindungsaufbau, nicht die gesamte Lebensdauer der Antwort.

Das Beispiel verwendet bewusst ein HTTP-Ziel. Es fügt für HTTPS nicht allein durch einen Wechsel des URI-Schemas eine CONNECT-Aushandlung hinzu.

Ähnliche Artikel