Pretvorite URL HTTP-proxyja v končno točko Twisted
Razdelite običajni URL HTTP-proxyja na gostitelja in vrata, namesto da bi ga posredovali kot slovnico opisa končne točke v Twistedu.
Običajna vrednost proxyja, kot je http://proxy.example:8080, je URL. clientFromString v Twistedu sprejme opis končne točke, na primer tcp:host=proxy.example:port=8080. Niza opisujeta povezane informacije z različnimi slovnicami.
Če aplikacija sprejme običajni URL HTTP-proxyja, ga razdelite pred ustvarjanjem končne točke:
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)
Izsek predvideva, da ima aplikacija že svoj reactor. Če vrata niso privzeta za URL HTTP, v konfiguraciji navedite dejanska vrata proxyja. Seznam HTTP-proxyjev ponuja kandidate za končne točke za dovoljeno javno zahtevo HTTP brez računa proxy. HostnameEndpoint se tudi izogne vstavljanju imena gostitelja v drug niz konfiguracije, ločen z dvopičji.
To pretvori samo vhod za usmerjanje. Poverilnice, vgrajene v URL, ne postanejo glava za avtorizacijo samo zato, ker sta bila gostitelj in vrata razdeljena. Zagotovite vso zahtevano podprto preverjanje pristnosti proxyja prek ureditve preverjanja pristnosti zahteve. Za preprost cilj HTTP in posrednika, ki ponuja Basic, glave zahteve Basic v ProxyAgent zagotavljajo eno takšno ureditev.
URL proxyja HTTPS zahteva povezavo s proxyjem, ki podpira TLS. URL SOCKS zahteva pogajanja SOCKS. Nobeno od tega ni izvedeno s pošiljanjem teh shem v preprosto pretvorbo končne točke HTTP ProxyAgent.