Requests کے لیے IPv4 ip:port:user:password اندراجات تبدیل کریں
ip:port:user:password کو محدود تقسیم کے ساتھ پارس کریں اور پراکسی نقشہ بنانے سے پہلے اسناد کے اجزا انکوڈ کریں۔
اگر 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 روزمرہ لاگز سے دور رکھیں۔