Įprasta tarpinio serverio reikšmė, pavyzdžiui, http://proxy.example:8080, yra URL. Twisted clientFromString priima galinio taško aprašą, pavyzdžiui, tcp:host=proxy.example:port=8080. Abi eilutės aprašo susijusią informaciją skirtingomis gramatikomis.

Jei programa priima įprastą HTTP tarpinio serverio URL, išskaidykite jį prieš kurdami galinį tašką:

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)

Fragmentas daro prielaidą, kad programa jau turi savo reactor. Nurodykite tikrąjį tarpinio serverio prievadą konfigūracijoje, kai jis nėra HTTP URL numatytasis. HTTP tarpinių serverių sąrašas siūlo galinių taškų kandidatus leidžiamai viešai HTTP užklausai be tarpinio serverio paskyros. HostnameEndpoint taip pat vengia įterpti mazgo pavadinimą į kitą dvitaškiu atskirtą konfigūracijos eilutę.

Tai konvertuoja tik maršrutizavimo įvestį. URL įterpti kredencialai netampa autorizacijos antrašte vien todėl, kad mazgas ir prievadas buvo išskaidyti. Pateikite bet kokią reikalingą palaikomą tarpinio serverio autentifikaciją per užklausos autentifikavimo tvarką. Paprastam HTTP tikslui ir tarpininkui, siūlančiam Basic, ProxyAgent Basic užklausos antraštės suteikia vieną tokią tvarką.

HTTPS tarpinio serverio URL reikalauja TLS palaikančio ryšio su tarpiniu serveriu. SOCKS URL reikalauja SOCKS derybų. Nė vienas nėra įgyvendinamas siunčiant tas schemas į paprastą HTTP ProxyAgent galinio taško konversiją.

Susiję straipsniai