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 ఎండ్పాయింట్ మార్పిడికి పంపడం ద్వారా రెండూ అమలు చేయబడవు.