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

Қатысты мақалалар