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 എൻഡ്പോയിന്റ് പരിവർത്തനത്തിലേക്ക് അയച്ചുകൊണ്ട് രണ്ടും നടപ്പിലാക്കുന്നില്ല.

അനുബന്ധ ലേഖനങ്ങൾ