HTTP ପ୍ରକ୍ସି URL କୁ Twisted ଏଣ୍ଡପଏଣ୍ଟରେ ରୂପାନ୍ତର କରନ୍ତୁ
Twisted ର ଏଣ୍ଡପଏଣ୍ଟ ବର୍ଣ୍ଣନା ବ୍ୟାକରଣ ଭାବରେ ପଠାଇବା ପରିବର୍ତ୍ତେ ପାରମ୍ପରିକ HTTP ପ୍ରକ୍ସି URL କୁ ହୋଷ୍ଟ ଏବଂ ପୋର୍ଟରେ ବିଭକ୍ତ କରନ୍ତୁ।
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 ଏଣ୍ଡପଏଣ୍ଟ ରୂପାନ୍ତରକୁ ପଠାଇ ଦୁଇଟିରୁ କୌଣସିଟି କାର୍ଯ୍ୟକାରୀ ହୁଏ ନାହିଁ।