HTTP puhverserveri URL-i muutmine Twistedi lõpp-punktiks
Jagage tavaline HTTP puhverserveri URL hostiks ja pordiks, selle asemel et edastada see Twistedi lõpp-punkti kirjelduse grammatikana.
Tavaline puhverserveri väärtus nagu http://proxy.example:8080 on URL. Twistedi clientFromString võtab vastu lõpp-punkti kirjelduse, näiteks tcp:host=proxy.example:port=8080. Kaks stringi kirjeldavad seotud teavet erinevate grammatikatega.
Kui rakendus võtab vastu tavalise HTTP puhverserveri URL-i, jagage see enne lõpp-punkti loomist:
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)
Katkend eeldab, et rakendusel on juba oma reactor. Kui port ei ole HTTP URL-i vaikeväärtus, määrake konfiguratsioonis tegelik puhverserveri port. HTTP puhverserverite loend pakub lõpp-punkti kandidaate lubatud avaliku HTTP-päringu jaoks ilma puhverserveri kontota. HostnameEndpoint väldib ka hostinime manustamist teise kooloniga eraldatud konfiguratsioonistringi.
See teisendab ainult marsruutimise sisendi. URL-i manustatud mandaadid ei muutu autoriseerimispäiseks ainult seetõttu, et host ja port jagati. Esitage vajalik toetatud puhverserveri autentimine päringu autentimiskorralduse kaudu. Lihtsa HTTP-sihtkoha ja Basicut pakkuva vahendaja jaoks pakuvad ProxyAgenti Basic päringupäised ühe sellise korralduse.
HTTPS puhverserveri URL nõuab puhverserveriga TLS-võimalusega ühendust. SOCKS URL nõuab SOCKS läbirääkimist. Kumbagi ei rakendata nende skeemide saatmisega lihtsasse HTTP ProxyAgenti lõpp-punkti teisendusse.