HTTP প্রক্সি প্রদানকারীর IPv4 ফরম্যাট ip:port:user:password-এর জন্য, Requests-কে মানটি দেওয়ার আগে ক্ষেত্রগুলি রূপান্তর করুন:

from ipaddress import IPv4Address
from urllib.parse import quote

def proxy_map(line):
    host, port, user, password = line.rstrip('\r\n').split(':', 3)
    host = str(IPv4Address(host))
    port = int(port)
    if not 1 <= port <= 65535:
        raise ValueError('Proxy port is out of range')
    credentials = quote(user, safe='') + ':' + quote(password, safe='')
    url = f'http://{credentials}@{host}:{port}'
    return {'http': url, 'https': url}

সীমাবদ্ধ বিভাজন পাসওয়ার্ডের ভিতরের যেকোনও অতিরিক্ত কোলন সংরক্ষণ করে। কেবল লাইন শেষগুলি সরানোও সেই স্পেসগুলিকে নিঃশব্দে মুছে ফেলা থেকে বাঁচায় যেগুলি ক্রেডেনশিয়ালের অংশ হতে পারে।

ব্যবহারকারীর নাম ও পাসওয়ার্ড আলাদা URL উপাদান হিসেবে এনকোড করুন। কাঁচা পাসওয়ার্ডে থাকা @ কে প্রক্সি হোস্টের আগের বিভাজক ভেবে ভুল করা যাবে না। এই ফাংশন কাঁচা ক্রেডেনশিয়াল আশা করে; আগে থেকেই এনকোড করা লেখা দিলে শতাংশ চিহ্নটি আবার এনকোড হতে পারে।

ফিরে আসা ম্যাপটি HTTP ও HTTPS গন্তব্যের জন্য এই প্রক্সি বাছাই করে। http://192.0.2.10-এর মতো কী Requests-এ অন্য অর্থ রাখে: এটি ওই গন্তব্য হোস্টের জন্য একটি পথ বাছাই করে। এটি প্রক্সি সার্ভারের পুলের সূচক নয়।

পার্সারটি ইচ্ছাকৃতভাবে কেবল উল্লিখিত IPv4 ফরম্যাট গ্রহণ করে। এটি কোলনযুক্ত ব্যবহারকারীর নাম বা বন্ধনী ছাড়া IPv6 ঠিকানা কভার করে না; সেগুলির জন্য দ্ব্যর্থহীন ইনপুট ফরম্যাট দরকার। তৈরি করা ক্রেডেনশিয়ালযুক্ত URL নিয়মিত লগের বাইরে রাখুন।

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