Badilisha URL ya proksi ya HTTP kuwa endpoint ya Twisted
Gawanya URL ya kawaida ya proksi ya HTTP katika mwenyeji na mlango badala ya kuipitisha kama sarufi ya maelezo ya endpoint ya Twisted.
Thamani ya kawaida ya proksi kama http://proxy.example:8080 ni URL. clientFromString ya Twisted inakubali maelezo ya endpoint, kama tcp:host=proxy.example:port=8080. Mistari miwili inaeleza taarifa zinazohusiana kwa sarufi tofauti.
Ikiwa programu inakubali URL ya kawaida ya proksi ya HTTP, igawanye kabla ya kuunda endpoint:
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)
Kipande hicho kinadhani programu tayari ina reactor yake. Bainisha mlango halisi wa proksi katika usanidi wakati si chaguo-msingi la URL ya HTTP. Orodha ya proksi za HTTP inatoa wagombea wa endpoint kwa ombi la umma la HTTP linaloruhusiwa bila akaunti ya proksi. HostnameEndpoint pia inaepuka kuingiza jina la mwenyeji katika mfuatano mwingine wa usanidi uliotenganishwa na koloni.
Hii inabadilisha tu pembejeo ya uelekezaji. Vitambulisho vilivyopachikwa kwenye URL hazibadiliki kuwa kichwa cha uidhinishaji kwa sababu tu mwenyeji na mlango viligawanywa. Toa uthibitishaji wowote wa proksi unaotumika unaohitajika kupitia mpango wa uthibitishaji wa ombi. Kwa lengo la kawaida la HTTP na mpatanishi anayetoa Basic, vichwa vya ombi la Basic vya ProxyAgent hutoa mpango mmoja kama huo.
URL ya proksi ya HTTPS inahitaji muunganisho wa proksi unaoweza TLS. URL ya SOCKS inahitaji majadiliano ya SOCKS. Hakuna kati yao inayotekelezwa kwa kutuma skimu hizo kwenye ubadilishaji rahisi wa endpoint ya HTTP ProxyAgent.