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 අන්ත ලක්ෂ්‍ය පරිවර්තනයට යැවීමෙන් දෙකම ක්‍රියාත්මක නොවේ.

අදාළ ලිපි