Երբ Requests-ը հասանելի է նախագծում, կանչին փոխանցեք պրոքսիների համապատասխանեցում․

import requests

proxies = {
    "http": "http://127.0.0.1:8080",
    "https": "http://127.0.0.1:8080",
}

response = requests.get(
    "https://example.com/",
    proxies=proxies,
    timeout=(5, 15),
)
response.raise_for_status()
print(response.status_code)

Loopback վերջնակետը փոխարինեք ձեր աշխատող պրոքսիով կամ HTTP պրոքսիների ցանկի թեկնածուով, որը ստուգելու եք այս հարցմամբ։ Բանալիները նկարագրում են նպատակակետի սխեմաները՝ http HTTP URL-ների և https HTTPS URL-ների համար։ Արժեքները նկարագրում են պրոքսիի լսող հանգույցը։ Դրանք կարող են տարբեր վերջնակետեր լինել, եթե ցանցը պահանջում է առանձին ուղիներ։

http:// պրոքսիի արժեքը https բանալու տակ դնելը դիտավորյալ է։ Requests-ը HTTP լսող հանգույցից խնդրում է CONNECT թունել, ապա դրա միջով հաստատում է նպատակակետի TLS-ը՝ պրոքսիի նպատակակետերի ու պորտերի քաղաքականության սահմաններում։ Արժեքը https:// դարձնելը պահանջում է TLS դեպի հենց պրոքսին․ դա կարող է ձախողվել, եթե հանգույցը սպասում է չգաղտնագրված HTTP։

Ի՞նչ են նշանակում ժամանակի սահմանափակման երկու թվերը

timeout=(5, 15)-ը սահմանում է միացման և ընթերցման ժամանակային սահմանները։ Այն ամբողջ աշխատանքի համար տասնհինգ վայրկյան վերջնաժամկետ չի պարտադրում։ Պարբերաբար ստացվող տվյալները, բազմաթիվ հասցեներն ու միացման փորձերը կարող են երկարացնել անցած ժամանակը։ Այս կարգավորումը բաց թողնելիս Requests-ը ընդհանուր ժամանակային սահման չի տալիս։ Ընտրեք պատասխանին համապատասխան սահմաններ և հավելվածի մակարդակում վերջնաժամկետ ավելացրեք, եթե աշխատանքը խիստ ընդհանուր ժամանակային բյուջե է պահանջում։

Խափանումը մշակեք այն փուլում, որտեղ այն առաջանում է

try:
    response = requests.get(
        "https://example.com/",
        proxies=proxies,
        timeout=(5, 15),
    )
    response.raise_for_status()
except requests.exceptions.ProxyError as error:
    print("Proxy setup failed:", type(error).__name__)
except requests.exceptions.Timeout:
    print("A configured timeout expired")
except requests.exceptions.HTTPError as error:
    print("HTTP status:", error.response.status_code)

Մերժված CONNECT-ը կարող է առաջացնել ProxyError դեռ մինչև նպատակակետի պատասխանի առկայությունը։ HTTPError ճյուղը հետևում է սխալի կարգավիճակով ստացված պատասխանին․ Timeout-ը նշանակում է, որ սահմանված ժամանակը սպառվել է։ Միացման բացառությունների շղթաները տեղում ուսումնասիրեք և տարածելուց առաջ հեռացրեք մուտքային տվյալներ պարունակող վերջնակետերն ու մասնավոր URL-ները։

Վկայագրերի ստուգումը միացված թողեք։ Եթե լիազորված ցանցն օգտագործում է մասնավոր CA կամ կառավարվող միջամտություն, տրամադրեք ակնկալվող վստահության նյութը՝ ստուգումն անջատելու փոխարեն։

Յուրաքանչյուր հարցման բացահայտ գրառումները կառավարում են այստեղ տրված ուղիները, սակայն բաց թողնված սխեմաների վրա դեռ կարող է ազդել միջավայրից պրոքսիի հայտնաբերումը։ Կանչը վերօգտագործվող Session տեղափոխելիս որոշեք, ինչպես պետք է փոխազդեն միջավայրի փոփոխականները, Session-ի լռելյայն արժեքներն ու հարցման վերագրումները․ միացման վերօգտագործումն ու երթուղավորման քաղաքականությունը տարբեր ընտրություններ են։

Առնչվող հոդվածներ