HTTP proxy URL-ni Twisted son nöqtəsinə çevirin
Adi HTTP proxy URL-ni Twisted-in son nöqtə təsviri qrammatikası kimi ötürmək əvəzinə host və porta ayırın.
http://proxy.example:8080 kimi adi proxy dəyəri bir URL-dir. Twisted-in clientFromString funksiyası tcp:host=proxy.example:port=8080 kimi son nöqtə təsviri qəbul edir. İki sətir əlaqəli məlumatı fərqli qrammatikalarla təsvir edir.
Tətbiq adi HTTP proxy URL qəbul edirsə, son nöqtəni yaratmazdan əvvəl onu təhlil edin:
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)
Fraquint tətbiqin artıq reactorunun olduğunu ehtimal edir. HTTP URL standartı deyilsə, real proxy portunu konfiqurasiyada göstərin. HTTP proxy siyahısı proxy hesabı olmadan icazə verilmiş açıq HTTP sorğusu üçün son nöqtə namizədləri təklif edir. HostnameEndpoint həmçinin host adını iki nöqtə ilə ayrılmış başqa konfiqurasiya sətrinə yerləşdirməkdən çəkinir.
Bu yalnız marşrutlaşdırma girdisini çevirir. URL-də yerləşdirilmiş etimadnamələr yalnız host və port təhlil edildiyi üçün avtorizasiya başlığına çevrilmir. Tələb olunan dəstəklənən proxy autentifikasiyasını sorğunun autentifikasiya quruluşu vasitəsilə təmin edin. Sadə HTTP təyinatı və Basic təklif edən vasitəçi üçün ProxyAgent-in Basic sorğu başlıqları belə bir quruluş təqdim edir.
HTTPS proxy URL proxy-yə TLS qabiliyyətli bağlantı tələb edir. SOCKS URL SOCKS danışıqları tələb edir. Heç biri bu sxemləri adi HTTP ProxyAgent son nöqtə çevrilməsinə göndərməklə həyata keçirilmir.