HTTP प्रॉक्सी URL को Twisted एंडपॉइंट में बदलें
HTTP प्रॉक्सी URL को Twisted के एंडपॉइंट-विवरण व्याकरण के रूप में भेजने के बजाय होस्ट और पोर्ट में विभाजित करें।
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 एंडपॉइंट रूपांतरण में भेजकर दोनों में से कोई भी लागू नहीं होता।