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.

Tengdir greinar