ਪ੍ਰੌਕਸੀ ਪਾਸਵਰਡਾਂ ਵਿੱਚ ਖ਼ਾਸ ਅੱਖਰ
ਪ੍ਰੌਕਸੀ ਵਰਤੋਂਕਾਰ ਨਾਮ ਅਤੇ ਪਾਸਵਰਡ ਵੱਖਰੇ ਐਨਕੋਡ ਕਰੋ ਤਾਂ ਜੋ @, ਕੋਲਨ, ਸਲੈਸ਼ ਅਤੇ # 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 ਸਾਂਝੇ ਲੌਗ ਅਤੇ ਸਰੋਤ ਫਾਇਲਾਂ ਵਿੱਚ ਨਾ ਰੱਖੋ।