Një vlerë e zakonshme proxy si http://proxy.example:8080 është një URL. clientFromString i Twisted pranon një përshkrim endpointi, si tcp:host=proxy.example:port=8080. Dy vargjet përshkruajnë informacion të lidhur me gramatika të ndryshme.

Nëse aplikacioni pranon një URL të zakonshme të proxy HTTP, ndajeni atë përpara se të krijohet endpointi:

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)

Fragmenti supozon se aplikacioni e ka tashmë reactor-in e vet. Specifikoni portin real të proxy-t në konfigurim kur ai nuk është parazgjedhja e URL-së HTTP. Lista e proxy-ve HTTP ofron kandidatë endpointi për një kërkesë publike HTTP të lejuar pa llogari proxy. HostnameEndpoint gjithashtu shmang futjen e emrit të hostit në një varg tjetër konfigurimi të ndarë me dy pika.

Kjo konverton vetëm hyrjen e rrugëzimit. Kredencialet e futura në një URL nuk bëhen header autorizimi vetëm sepse hosti dhe porti u ndanë. Ofroni çdo vërtetim proxy të mbështetur të kërkuar përmes mekanizmit të vërtetimit të kërkesës. Për një destinacion të thjeshtë HTTP dhe një ndërmjetës që ofron Basic, header-at e kërkesës Basic të ProxyAgent ofrojnë një mekanizëm të tillë.

Një URL proxy HTTPS kërkon një lidhje me proxy-n të aftë për TLS. Një URL SOCKS kërkon negocim SOCKS. Asnjëra nuk implementohet duke i dërguar ato skema një konvertimi të thjeshtë endpointi HTTP ProxyAgent.

Artikuj të ngjashëm