Skakel 'n HTTP-proxy-URL om na 'n Twisted-eindpunt
Ontleed 'n gewone HTTP-proxy-URL in gasheer en poort eerder as om dit as Twisted se eindpuntbeskrywingsgrammatika deur te gee.
’n Gewone proxywaarde soos http://proxy.example:8080 is ’n URL. Twisted se clientFromString aanvaar ’n eindpuntbeskrywing soos tcp:host=proxy.example:port=8080. Die twee stringe beskryf verwante inligting met verskillende grammatikas.
As die toepassing ’n gewone HTTP-proxy-URL aanvaar, ontleed dit voordat die eindpunt geskep word:
import os
from urllib.parse import urlsplit
from twisted.internet.endpoints import HostnameEndpoint
from twisted.web.client import ProxyAgent
proxy = urlsplit(os.environ['http_proxy'])
if proxy.scheme != 'http' or not proxy.hostname:
raise ValueError('Expected an HTTP proxy URL')
port = proxy.port if proxy.port is not None else 80
endpoint = HostnameEndpoint(reactor, proxy.hostname, port, timeout=5)
agent = ProxyAgent(endpoint, reactor=reactor)
Die fragment neem aan dat die toepassing reeds sy reactor het. Spesifiseer die werklike proxypoort in die konfigurasie wanneer dit nie die verstek van die HTTP-URL is nie. Die HTTP-proxylis bied eindpuntkandidate vir ’n toegelate openbare HTTP-versoek sonder ’n proxyrekening. HostnameEndpoint vermy ook om die gasheernaam in nog ’n dubbelpunt-geskeide konfigurasiestring in te bed.
Dit skakel slegs die routeringsinvoer om. Bewyse wat in ’n URL ingebed is, word nie ’n magtigingsopskrif bloot omdat die gasheer en poort ontleed is nie. Verskaf enige vereiste ondersteunde proxyverifikasie deur die versoek se verifikasie-reëling. Vir ’n gewone HTTP-bestemming en ’n tussenganger wat Basic bied, bied ProxyAgent se Basic-versoekopskrifte een so ’n reëling.
’n HTTPS-proxy-URL vereis ’n TLS-vermoënde verbinding na die proxy. ’n SOCKS-URL vereis SOCKS-onderhandeling. Nie een word geïmplementeer deur daardie skemas in ’n gewone HTTP-ProxyAgent-eindpuntomskakeling te stuur nie.