Прокси құпиясөздеріндегі арнайы таңбалар
@, қос нүкте, қиғаш сызық және # 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-дерді ортақ журналдар мен бастапқы файлдарға жазбаңыз.