પ્રોક્સી પાસવર્ડમાં વિશેષ અક્ષરો
પ્રોક્સી વપરાશકર્તાનામ અને પાસવર્ડ અલગ એન્કોડ કરો જેથી @, કોલન, સ્લૅશ અને # 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 શેર કરેલા લૉગ અને સોર્સ ફાઇલોમાં ન મૂકો.