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 एंडपॉइंट रूपांतरणात पाठवून दोन्हीपैकी कोणतेही अंमलात येत नाही.

संबंधित लेख