In HTTP-proxy-URL omsette nei in Twisted-einpunt
Spjalte in gewoane HTTP-proxy-URL yn host en poarte ynstee fan it troch te jaan as de einpuntbeskriuwing-grammatika fan Twisted.
In gewoane proxywearde lykas http://proxy.example:8080 is in URL. clientFromString fan Twisted akseptearret in einpuntbeskriuwing, lykas tcp:host=proxy.example:port=8080. De beide strings beskriuwe besibbe ynformaasje mei ferskillende grammatika's.
As de applikaasje in gewoane HTTP-proxy-URL akseptearret, spjalt it dan foardat it einpunt oanmakke wurdt:
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)
It fragmint giet derfan út dat de applikaasje al syn reactor hat. Jou de echte proxy-poarte yn 'e konfiguraasje oan as dy net de standert fan 'e HTTP-URL is. De HTTP-proxylist biedt einpuntkandidaten foar in tastiene iepenbiere HTTP-oanfraach sûnder proxy-account. HostnameEndpoint mijt ek it ynbêdzjen fan 'e hostnamme yn in oare troch dûbele punten skieden konfiguraasjestring.
Dit konvertearret allinnich de routingynfier. Bewiisynformaasje dy't yn in URL ynbêde is, wurdt net in autorisaasje-header allinnich om't host en poarte spjalte binne. Jou alle fereaske stipe proxy-autentikaasje fia de autentikaasje-regeling fan 'e oanfraach. Foar in gewoan HTTP-bestimming en in tuskenpersoan dy't Basic biedt, biede ProxyAgent syn Basic-oanfraachheaders ien sa'n regeling.
In HTTPS-proxy-URL fereasket in TLS-machtige ferbining mei de proxy. In SOCKS-URL fereasket SOCKS-ûnderhanneling. Gjin fan beide wurdt ymplemintearre troch dy skema's yn in gewoane HTTP-ProxyAgent-einpuntkonverzje te stjoeren.