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 ಎಂಡ್ಪಾಯಿಂಟ್ ಪರಿವರ್ತನೆಗೆ ಕಳುಹಿಸುವ ಮೂಲಕ ಎರಡೂ ಜಾರಿಗೊಳಿಸಲ್ಪಡುವುದಿಲ್ಲ.