Ang karaniwang halaga ng proxy gaya ng http://proxy.example:8080 ay isang URL. Tinatanggap ng clientFromString ng Twisted ang paglalarawan ng endpoint, gaya ng tcp:host=proxy.example:port=8080. Inilalarawan ng dalawang string ang magkakaugnay na impormasyon sa magkaibang grammar.

Kung tinatanggap ng application ang karaniwang HTTP proxy URL, hatiin ito bago gawin ang 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)

Ipinapalagay ng fragment na mayroon nang reactor ang application. Tukuyin ang tunay na port ng proxy sa configuration kapag hindi ito ang default ng HTTP URL. Nag-aalok ang listahan ng HTTP proxy ng mga kandidatong endpoint para sa pinahihintulutang pampublikong HTTP request na walang proxy account. Iniiwasan din ng HostnameEndpoint ang paglalagay ng hostname sa isa pang configuration string na pinaghihiwalay ng tutuldok.

Binabago lamang nito ang input ng routing. Ang mga kredensyal na naka-embed sa URL ay hindi nagiging authorization header dahil lang sa hinati ang host at port. Ibigay ang anumang kinakailangang suportadong proxy authentication sa pamamagitan ng authentication arrangement ng request. Para sa simpleng HTTP destination at intermediary na nag-aalok ng Basic, ang Basic request header ng ProxyAgent ay nagbibigay ng gayong arrangement.

Ang HTTPS proxy URL ay nangangailangan ng koneksyon sa proxy na may kakayahang TLS. Ang SOCKS URL ay nangangailangan ng SOCKS negotiation. Wala sa dalawa ang naipapatupad sa pamamagitan ng pagpapadala ng mga scheme na iyon sa simpleng conversion ng endpoint ng HTTP ProxyAgent.

Kaugnay na mga artikulo