http://proxy.example:8080 gibi geleneksel bir proxy değeri bir URL'dir. Twisted'ın clientFromString işlevi tcp:host=proxy.example:port=8080 gibi bir uç noktası açıklaması kabul eder. İki dize ilişkili bilgileri farklı dil bilgileriyle açıklar.

Uygulama geleneksel bir HTTP proxy URL'si kabul ediyorsa, uç noktayı oluşturmadan önce onu ayrıştırın:

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)

Parça, uygulamanın reactor'ünün zaten olduğunu varsayar. Bağlantı noktası HTTP URL'sinin varsayılanı değilse yapılandırmada gerçek proxy bağlantı noktasını belirtin. HTTP proxy listesi, proxy hesabı olmadan izin verilen genel bir HTTP isteği için uç noktası adayları sunar. HostnameEndpoint ayrıca ana bilgisayar adını iki nokta ile ayrılmış başka bir yapılandırma dizesine gömmekten kaçınır.

Bu yalnızca yönlendirme girdisini dönüştürür. Bir URL'ye gömülü kimlik bilgileri yalnızca ana bilgisayar ve bağlantı noktası ayrıştırıldığı için yetkilendirme başlığı olmaz. Gereken desteklenen proxy kimlik doğrulamasını isteğin kimlik doğrulama düzeni aracılığıyla sağlayın. Düz HTTP hedefi ve Basic sunan bir aracı için ProxyAgent'ın Basic istek başlıkları böyle bir düzen sağlar.

Bir HTTPS proxy URL'si proxy'ye TLS yetenekli bir bağlantı gerektirir. Bir SOCKS URL'si SOCKS görüşmesi gerektirir. İkisi de bu şemaların düz bir HTTP ProxyAgent uç noktası dönüşümüne gönderilmesiyle uygulanmaz.

İlgili makaleler