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 इन्डपोइन्ट रूपान्तरणमा पठाएर दुवैमध्ये कुनै पनि कार्यान्वयन हुँदैन।

सम्बन्धित लेखहरू