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 எண்ட்பாயிண்ட் மாற்றத்திற்கு அனுப்புவதால் இரண்டும் செயல்படுத்தப்படுவதில்லை.