Breytið HTTP-proxy slóð í Twisted endapunkt
Greinið hefðbundna HTTP-proxy slóð í hýsil og gátt í stað þess að senda hana sem endapunktalýsingu Twisted.
Hefðbundið proxy-gildi eins og http://proxy.example:8080 er slóð. clientFromString í Twisted tekur við endapunktalýsingu, eins og tcp:host=proxy.example:port=8080. Strengirnir tveir lýsa tengdum upplýsingum með mismunandi málfræði.
Ef forritið tekur við hefðbundinni HTTP-proxy slóð, greinið hana áður en endapunkturinn er búinn til:
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)
Brotinn gerir ráð fyrir að forritið hafi þegar sinn reactor. Tilgreinið raunverulega proxy-gátt í stillingunum þegar hún er ekki sjálfgefin gildi HTTP-slóðarinnar. HTTP-proxylistinn býður endapunktsefni fyrir leyfða opinbera HTTP-beiðni án proxy-reiknings. HostnameEndpoint forðast einnig að fella hýsilnafnið inn í annan tvípunktaaðskilinn stillingarstreng.
Þetta breytir aðeins leiðarstreyminu. Skilríki sem eru felld inn í slóð verða ekki auðkenningarfyrirsögn eingöngu vegna þess að hýsillinn og gáttin voru greind. Veitið hvers kyns nauðsynlega studda proxy-auðkenningu í gegnum auðkenningaruppsetningu beiðninnar. Fyrir venjulegan HTTP-áfangastað og millilið sem býður Basic veita Basic-beiðnifyrirsagnir ProxyAgent eina slíka uppsetningu.
HTTPS-proxy slóð krefst TLS-færs tengingar við proxyið. SOCKS-slóð krefst SOCKS-samskipta. Hvorki er útfært með því að senda þessi kerfi inn í einfalda HTTP-ProxyAgent endapunktabreytingu.