পরিচয়পত্র সঠিক হলেও @ বা # থাকা পাসওয়ার্ড হাতে বানানো প্রক্সি 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 শেয়ার করা লগ ও সোর্স ফাইলে রাখবেন না।

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