কিছু অ্যাপ IP:port চায়। অন্যগুলোর দরকার http:// বা socks5:// দিয়ে শুরু হওয়া URL। ব্রাউজারের সেটিংসে ঠিকানা ও পোর্ট প্রায়ই আলাদা ঘরে থাকে। তাই একই endpoint ঠিকানা না বদলেই কয়েকটি ফরম্যাটে দেখা যেতে পারে।

একটি IPv4 এন্ট্রি

ধরা যাক, একটি HTTP proxy তালিকা উদাহরণ হিসেবে HTTP proxy 203.0.113.10:8080 দেয়।

অ্যাপ যা চায়লিখুন
Host বা IP203.0.113.10
পোর্ট8080
HTTP proxy URLhttp://203.0.113.10:8080

পোর্ট দুবার দেবেন না। অ্যাপে পোর্টের আলাদা ঘর থাকলে host-এর ঘরে 203.0.113.10:8080 দিলে পুরো স্ট্রিংকে hostname হিসেবে resolve করার চেষ্টা করতে পারে। একইভাবে, স্পষ্টভাবে শুধু IP ঠিকানা চাওয়া ঘরে scheme যোগ করবেন না।

Scheme-কে পরিষেবার সঙ্গে মিলতে হবে। ঠিকানা রূপান্তরের আগে ক্লায়েন্টের সমর্থন অনুযায়ী HTTP বা SOCKS5 বাছুন। HTTP endpoint-এর আগে socks5:// লিখলে ক্লায়েন্ট যা পাঠায় তা বদলে যায়; ওই সার্ভারে SOCKS5 চালু হয় না।

URL-এ IPv6-এর জন্য বর্গাকার বন্ধনী দরকার

IPv6 ঠিকানায় আগে থেকেই কোলন থাকে, তাই URL পোর্ট যোগ করার আগে ঠিকানাকে বর্গাকার বন্ধনীতে রাখে:

http://[2001:db8::10]:8080
socks5://[2001:db8::10]:1080

বন্ধনী না থাকলে ঠিকানা ও পোর্টের সীমানা অস্পষ্ট। আলাদা ঘরের অ্যাপ সাধারণত host হিসেবে 2001:db8::10 এবং পোর্ট হিসেবে 8080 চায়; সেই অ্যাপের ইনপুট ফরম্যাট মানুন। এখানে উভয় ঠিকানাই নথির উদাহরণ, সক্রিয় proxy নয়।

প্রতিটি কোলনে ভাগ না করে URL পার্স করুন

ছোট একটি Python স্ক্রিপ্ট মানক URL parser দিয়ে IPv4 এবং বন্ধনীযুক্ত IPv6 URL সামলাতে পারে:

from urllib.parse import urlsplit

proxy = urlsplit("http://[2001:db8::10]:8080")
print(proxy.scheme)
print(proxy.hostname)
print(proxy.port)

hostname প্রপার্টি বন্ধনী ছাড়া ঠিকানা ফেরায়। মূল স্ট্রিং প্রতিটি কোলনে ভাগ করলে এই উদাহরণ নষ্ট হবে। বাস্তব importer-এ অনুপস্থিত host, অসমর্থিত scheme এবং 1–65535-এর বাইরে পোর্টও প্রত্যাখ্যান করুন। URL পার্স করলে তার অংশগুলো পাওয়া যায়; পরিষেবা আছে বলে প্রমাণ হয় না।

তালিকায় ব্যবহারকারীর নাম ও পাসওয়ার্ড থাকলে

URL-এর প্রচলিত বিন্যাস http://username:password@host:port। পরিচয়পত্রের @, # এবং /-এর মতো অক্ষরে যথাযথ URL encoding দরকার। ক্লায়েন্টে পরিচয়পত্রের আলাদা ঘর থাকলে নিজে URL তৈরির চেয়ে সেগুলো ব্যবহার করা সাধারণত সহজ।

কোলন দিয়ে আলাদা করা পরিচয়পত্রের স্ট্রিং রূপান্তরের আগে প্রদানকারীর মূল ফরম্যাট দেখুন। এভাবে আলাদা চারটি ঘরের কোনো সর্বজনীন অর্থ নেই এবং পাসওয়ার্ডের মধ্যেও কোলন থাকতে পারে। সাধারণ IP:port লাইনের জন্য তৈরি parser যেন নীরবে অন্য ফরম্যাট অনুমান না করে।

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