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 প্রদানকারী intermediary-এর জন্য, ProxyAgent-এর Basic অনুরোধ হেডার এমন একটি ব্যবস্থা দেয়।

HTTPS প্রক্সি URL-এর জন্য প্রক্সিতে TLS-সক্ষম সংযোগ প্রয়োজন। SOCKS URL-এর জন্য SOCKS আলোচনা প্রয়োজন। সেই স্কিমগুলো সাধারণ HTTP ProxyAgent এন্ডপয়েন্ট রূপান্তরে পাঠিয়ে কোনোটিই বাস্তবায়িত হয় না।

সম্পর্কিত নিবন্ধ