HTTP прокси URL мекенжайын Twisted соңғы нүктесіне айналдыру
Кәдімгі HTTP прокси URL мекенжайын Twisted-тің соңғы нүкте сипаттамасының грамматикасы ретінде берудің орнына хост пен портқа талдаңыз.
http://proxy.example:8080 сияқты кәдімгі прокси мәні — URL. Twisted-тің clientFromString функциясы tcp:host=proxy.example:port=8080 сияқты соңғы нүкте сипаттамасын қабылдайды. Екі жол байланысты ақпаратты әр түрлі грамматикамен сипаттайды.
Егер қолданба кәдімгі HTTP прокси URL-ын қабылдайтын болса, соңғы нүктені жасамас бұрын оны талдаңыз:
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)
Үзінді қолданбаның reactor-ы бар екенін болжайды. Порт HTTP URL-ының әдепкі мәні болмаса, нақты прокси портын конфигурацияда көрсетіңіз. HTTP прокси тізімі прокси тіркелгісінсіз рұқсат етілген жалпыға қолжетімді HTTP сұрауы үшін соңғы нүкте үміткерлерін ұсынады. HostnameEndpoint сондай-ақ хост атауын қос нүктемен бөлінген басқа конфигурация жолына кірістіруден аулақ болады.
Бұл тек маршруттау кірісін түрлендіреді. URL-ға енгізілген тіркелгі деректері хост пен порт талданғаны үшін ғана авторизация тақырыбына айналмайды. Қажетті қолдау көрсетілетін прокси аутентификациясын сұрау аутентификациясының тәртібі арқылы ұсыныңыз. Қарапайым HTTP мақсаты мен Basic ұсынатын делдал үшін ProxyAgent-тің Basic сұрау тақырыптары осындай тәртіптің бірін ұсынады.
HTTPS прокси URL проксиге TLS қабілетті қосылымды қажет етеді. SOCKS URL SOCKS келіссөзін қажет етеді. Екеуі де бұл схемаларды қарапайым HTTP ProxyAgent соңғы нүкте түрлендіруіне жіберу арқылы жүзеге асырылмайды.