که د ننوتلو معلومات سم هم وي، د @ یا # لرونکی پټنوم په لاس جوړ شوی پراکسي URL خرابولای شي. دا توري په URL کې لا مانا لري، نو مراجع د پټنوم یوه برخه د کوربه نوم یا fragment ګڼلای شي.

د ننوتلو دوه برخې جلا انکوډ کړئ

دا بېلګه د 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 عموماً سلاش بې له escape پرېږدي، خو د دې ننوتلو برخې سلاش باید انکوډ شي.

بشپړ پراکسي 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ونه په شریکو لاګونو او سرچینه فایلونو کې مه ساتئ.

اړوندې مقالې