Muunna HTTP-välityspalvelimen URL Twisted-päätepisteeksi
Jaa tavanomainen HTTP-välityspalvelimen URL isäntään ja porttiin sen sijaan, että välittäisit sen Twistedin päätepistekuvauksen kielioppina.
Tavanomainen välityspalvelimen arvo, kuten http://proxy.example:8080, on URL. Twistedin clientFromString hyväksyy päätepistekuvauksen, kuten tcp:host=proxy.example:port=8080. Kaksi merkkijonoa kuvaavat toisiinsa liittyvää tietoa eri kieliopeilla.
Jos sovellus hyväksyy tavanomaisen HTTP-välityspalvelimen URL:n, jaa se ennen päätepisteen luomista:
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)
Katkelma olettaa, että sovelluksella on jo reactor. Määritä välityspalvelimen todellinen portti asetuksissa, kun se ei ole HTTP-URL:n oletus. HTTP-välityspalvelinluettelo tarjoaa päätepisteehdokkaita sallittua julkista HTTP-pyyntöä varten ilman välityspalvelintiliä. HostnameEndpoint välttää myös isäntänimen upottamisen toiseen kaksoispisteellä erotettuun asetustekstiin.
Tämä muuntaa vain reitityssyötteen. URL:ään upotetut tunnistetiedot eivät muutu valtuutusotsikoksi vain siksi, että isäntä ja portti jaettiin. Tarjoa tarvittava tuettu välityspalvelimen todennus pyynnön todennusjärjestelyn kautta. Yksinkertaisen HTTP-kohteen ja Basic-todennusta tarjoavan välittäjän tapauksessa ProxyAgentin Basic-pyyntöotsikot tarjoavat yhden tällaisen järjestelyn.
HTTPS-välityspalvelimen URL vaatii TLS-kykyisen yhteyden välityspalvelimeen. SOCKS-URL vaatii SOCKS-neuvottelun. Kumpaakaan ei toteuteta lähettämällä näitä skeemoja yksinkertaiseen HTTP ProxyAgent -päätepistemuunnokseen.