Gjer ein HTTP-proxy-URL om til eit Twisted-endepunkt
Del ein vanleg HTTP-proxy-URL opp i vert og port i staden for å senda han som grammatikken til endepunktbeskrivinga i Twisted.
Ein vanleg proxyverdi som http://proxy.example:8080 er ein URL. clientFromString i Twisted godtek ei endepunktbeskriving, som tcp:host=proxy.example:port=8080. Dei to strengane skildrar slekta informasjon med ulike grammatikkar.
Viss programmet godtek ein vanleg HTTP-proxy-URL, del han opp før endepunktet blir laga:
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)
Utdraget føreset at programmet allereie har sin reactor. Oppgi den verkelege proxyporten i konfigurasjonen når han ikkje er standarden til HTTP-URL-en. HTTP-proxylista tilbyr endepunktkandidatar for ein tillaten offentleg HTTP-førespurnad utan proxykonto. HostnameEndpoint unngår òg å byggja vertsnamnet inn i ein annan kolonavdelt konfigurasjonsstreng.
Dette konverterer berre rutingsinndataa. Legitimasjon som er bygd inn i ein URL, blir ikkje ein autorisasjonsheader berre fordi verten og porten vart delte opp. Oppgi eventuell påkravd støtta proxyautentisering gjennom autentiseringsopplegget til førespurnaden. For eit vanleg HTTP-mål og ein mellommann som tilbyr Basic, gir Basic-førespurnadsheadera til ProxyAgent eit slikt opplegg.
Ein HTTPS-proxy-URL krev ei TLS-kapabel tilkopling til proxyen. Ein SOCKS-URL krev SOCKS-forhandling. Ingen av dei blir implementerte ved å senda desse skjemaene inn i ein vanleg HTTP-ProxyAgent-endepunktkonvertering.