Egy hagyományos proxyérték, például http://proxy.example:8080, URL. A Twisted clientFromString függvénye végpontleírást fogad el, például tcp:host=proxy.example:port=8080. A két karakterlánc kapcsolódó információkat ír le különböző nyelvtanokkal.

Ha az alkalmazás hagyományos HTTP-proxy URL-t fogad el, a végpont létrehozása előtt bontsa fel:

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)

A részlet feltételezi, hogy az alkalmazásnak már van reactorja. Ha a port nem a HTTP URL alapértelmezettje, adja meg a tényleges proxyportot a konfigurációban. Az HTTP-proxylista végpontjelölteket kínál egy engedélyezett nyilvános HTTP-kéréshez proxyfiók nélkül. A HostnameEndpoint azt is elkerüli, hogy a gazdagépnevet egy másik kettősponttal tagolt konfigurációs karakterláncba ágyazza.

Ez csak az útválasztási bemenetet alakítja át. Az URL-be ágyazott hitelesítő adatok nem válnak engedélyezési fejléccé csak azért, mert a gazdagépet és a portot felbontották. A kért támogatott proxyhitelesítést a kérés hitelesítési elrendezésén keresztül biztosítsa. Egyszerű HTTP-cél és Basic szolgáltatást nyújtó közvetítő esetén a ProxyAgent Basic kérésfejlécei nyújtanak egy ilyen elrendezést.

Az HTTPS-proxy URL TLS-képes kapcsolatot igényel a proxyhoz. A SOCKS URL SOCKS-tárgyalást igényel. Egyiket sem úgy valósítják meg, hogy ezeket a sémákat egy egyszerű HTTP ProxyAgent végpontátalakításba küldik.

Kapcsolódó cikkek