প্রক্সি পাসওয়ার্ডের বিশেষ অক্ষর
প্রক্সির ব্যবহারকারীর নাম ও পাসওয়ার্ড আলাদা এনকোড করুন, যাতে @, কোলন, স্ল্যাশ ও # URL নষ্ট না করে।
পরিচয়পত্র সঠিক হলেও @ বা # থাকা পাসওয়ার্ড হাতে বানানো প্রক্সি URL নষ্ট করতে পারে। এই অক্ষরগুলোর URL-এ আগে থেকেই অর্থ আছে, তাই ক্লায়েন্ট পাসওয়ার্ডের অংশকে হোস্টনাম বা ফ্র্যাগমেন্ট হিসেবে পড়তে পারে।
পরিচয়পত্রের দুটি ক্ষেত্র আলাদা এনকোড করুন
এই উদাহরণ URL-এর কাঠামোগত বিভাজক অক্ষত রাখে এবং শুধু ব্যবহারকারীর নাম ও পাসওয়ার্ড এনকোড করে:
from urllib.parse import quote
username = "user@team"
password = "p:a/ss#?"
proxy_url = (
"http://"
+ quote(username, safe="")
+ ":"
+ quote(password, safe="")
+ "@203.0.113.10:8080"
)
নিজের প্রকৃত এন্ডপয়েন্ট ও পরিচয়পত্র ব্যবহার করুন। দেখানো ঠিকানা নথির উদাহরণ। খালি safe আর্গুমেন্ট গুরুত্বপূর্ণ: quote সাধারণত স্ল্যাশকে এস্কেপ না করে রাখে, কিন্তু এই পরিচয়পত্রের ক্ষেত্রের ভেতরের স্ল্যাশ এনকোড করতে হবে।
পুরো প্রক্সি URL এনকোড করবেন না। স্কিমের বিভাজক ও পরিচয়পত্র-হোস্টের মাঝের @ এনকোড করলে সংরক্ষণ করতে চাওয়া কাঠামো নষ্ট হয়। আগে এনকোড করা পাসওয়ার্ড দ্বিতীয়বার এনকোড করাও এড়িয়ে চলুন।
ফলাফল Requests-এর সঙ্গে ব্যবহার করুন
import requests
response = requests.get(
"https://example.com/",
proxies={"http": proxy_url, "https": proxy_url},
timeout=(5, 15),
)
response.raise_for_status()
অনুরোধ এখনও ব্যর্থ হলে দেখুন প্রক্সি লগইন প্রত্যাখ্যান করছে, নাকি ক্লায়েন্ট আগেই পার্সিং বা সংযোগের সময় ব্যর্থ হয়েছে। 407 প্রমাণীকরণ চ্যালেঞ্জ ও অবৈধ URL ভিন্ন ব্যর্থতা।
HTTPX প্রমাণীকরণ আলাদা রাখতে পারে
HTTPX-এর Proxy অবজেক্ট এন্ডপয়েন্ট ও পরিচয়পত্র আলাদা আর্গুমেন্ট হিসেবে নিতে পারে:
import httpx
proxy = httpx.Proxy(
"http://203.0.113.10:8080",
auth=("user@team", "p:a/ss#?"),
)
with httpx.Client(proxy=proxy, trust_env=False, timeout=15) as client:
response = client.get("https://example.com/")
response.raise_for_status()
এতে userinfo অংশ নিজে তৈরি করতে হয় না। এটি প্রক্সি সংযোগ থেকে স্বাধীনভাবে পরিচয়পত্র এনক্রিপ্ট করে না, কিংবা সব সেবায় সমর্থিত প্রমাণীকরণ পদ্ধতি বাছাই করে না।
বিনামূল্যের তালিকা শুধু IP ও পোর্ট দিলে এই উদাহরণ ডিফল্ট পরিচয়পত্র দেয় না। পরিচালনাকারী সত্যিই অ্যাকাউন্ট দিলেই প্রমাণীকরণ ব্যবহার করুন। পরিচয়পত্রসহ URL শেয়ার করা লগ ও সোর্স ফাইলে রাখবেন না।