Python Requestsda proksi IP ishlatish
Requestsda har bir so‘rovning proksi yo‘lini aniq belgilang, oxirgi nuqtaning to‘g‘ri sxemasini tanlang va vaqt chegaralari bilan HTTPS tunnel xatolarini boshqaring.
Loyihada Requests mavjud bo‘lsa, chaqiriqqa proksi moslashuvini bering:
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 oxirgi nuqtasini ishlayotgan proksingiz yoki shu so‘rov bilan sinaydigan HTTP proksilar ro‘yxatidagi nomzodga almashtiring. Kalitlar maqsad sxemalarini bildiradi: HTTP URLlar uchun http va HTTPS URLlar uchun https. Qiymatlar proksi tinglovchisini bildiradi. Tarmoq alohida yo‘llarni talab qilsa, ular boshqa-boshqa oxirgi nuqtalar bo‘lishi mumkin.
http:// proksi qiymatining https kaliti ostida bo‘lishi ataylab qilingan. Requests HTTP tinglovchisidan CONNECT tunneli so‘raydi, keyin proksining maqsad va port siyosati asosida shu tunnel orqali maqsad TLS ulanishini o‘rnatadi. Qiymatni https:// qilish proksining o‘ziga TLS so‘raydi; tinglovchi shifrlanmagan HTTP kutsa, bu muvaffaqiyatsiz bo‘lishi mumkin.
Vaqt chegarasidagi ikki sonning ma’nosi
timeout=(5, 15) ulanish va o‘qish vaqt chegaralarini o‘rnatadi. Umumiy o‘n besh soniyalik oxirgi muddatni joriy etmaydi. Vaqti-vaqti bilan keladigan ma’lumot, bir nechta manzil va ulanish urinishlari o‘tgan vaqtni uzaytirishi mumkin. Sozlamani tashlasangiz Requests umumiy vaqt chegarasini bermaydi. Javobga mos chegarani tanlang va ishga qat’iy jami vaqt kerak bo‘lsa ilova darajasidagi muddat qo‘shing.
Nosozlikni yuzaga kelgan bosqichida boshqaring
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)
Rad etilgan CONNECT maqsad javobi mavjud bo‘lishidan oldin ProxyError chiqarishi mumkin. HTTPError tarmog‘i xato holatli olingan javobdan keyin keladi; Timeout belgilangan chegaraning tugaganini bildiradi. Ulanish o‘rnatish istisnolari zanjirini mahalliy tekshiring va ulashishdan oldin kirish ma’lumotli oxirgi nuqtalar bilan shaxsiy URLlarni olib tashlang.
Sertifikat tekshiruvini yoqilgan qoldiring. Ruxsat etilgan tarmoq xususiy CA yoki boshqariladigan tutib olishdan foydalansa, tekshiruvni o‘chirish o‘rniga kutilgan ishonch materialini taqdim eting.
Har bir so‘rovning aniq yozuvlari shu yerda berilgan yo‘llarni boshqaradi, ammo tashlab ketilgan sxemalarga muhitdagi proksi aniqlash hali ta’sir qilishi mumkin. Chaqiriqni qayta ishlatiladigan Sessionga ko‘chirganda, muhit o‘zgaruvchilari, Session standartlari va so‘rov ustidan yozishlari qanday ishlashini belgilang; ulanishdan qayta foydalanish va yo‘naltirish siyosati alohida tanlovlardir.