Պրոքսիի IP-ի օգտագործումը Python Requests-ում
Requests-ում բացահայտ նշեք յուրաքանչյուր հարցման պրոքսիի ուղիները, ընտրեք վերջնակետի ճիշտ սխեման և մշակեք ժամանակի սպառումն ու HTTPS թունելի խափանումները։
Երբ 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-ի լռելյայն արժեքներն ու հարցման վերագրումները․ միացման վերօգտագործումն ու երթուղավորման քաղաքականությունը տարբեր ընտրություններ են։