Python urllib: bitta opener uchun proksilarni o‘chirish
Boshqa mijozlar va jarayon muhitini o‘zgartirmasdan ProxyHandler({}) bilan to‘g‘ridan-to‘g‘ri ulanadigan urllib opener yarating.
Bitta urllib opener bevosita ulanishi kerak bo‘lsa, ProxyHandler’ga bo‘sh xaritalash bering:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
with direct.open("https://example.com/", timeout=10) as response:
print(response.status)
Bo‘sh lug‘at hech qanday proksi yo‘lini bermaydi. Xaritalashni bermaslik esa ishlovchiga proksilarni muhit va platforma sozlamalaridan topish imkonini beradi. Bu ikki yaratish usuli turli siyosatlarni ifodalaydi.
Misol Python standart kutubxonasidan foydalanadi va odatiy HTTPS tekshiruvini saqlaydi. with bloki javobni yopadi, jumladan istisno sabab blokdan chiqilganda ham.
Bitta ilovada bevosita va proksi orqali so‘rovlar
Ikki opener chaqiruvlar orasida muhit o‘zgaruvchilarini o‘zgartirmasdan ikki siyosatni olib yurishi mumkin:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
proxied = build_opener(ProxyHandler({
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}))
with proxied.open("https://example.com/", timeout=10) as response:
print(response.status)
Loopback manzilini o‘z HTTP proksingiz bilan almashtiring yoki proksi orqali taqqoslash uchun HTTP proksilar ro‘yxatidan nomzod tanlang. Xizmat ruxsat bersa, u HTTPS maqsadga ulanishni CONNECT orqali tashishi mumkin. Tinglovchining protokoli va autentifikatsiya qo‘llovi ishlovchiga mos bo‘lishi kerak.
Standart opener’ni o‘zgartirmang
direct.open yoki proxied.open’ni yo‘l uchun mas’ul obyekt orqali chaqiring. install_opener urllib qulaylik funksiyalari ishlatadigan butun jarayon uchun standartni o‘zgartiradi; shu sabab undan foydalangan kutubxona aloqasiz kodga ta’sir qilishi mumkin. Yuqoridagi alohida opener uchun bu kerak emas.
timeout argumenti operatsiya sozlamasi bo‘lib, har bir uzatishning barcha haqiqiy vaqtini qamrab oladigan muddat emas. Faqat kerakli ma’lumotni o‘qing; ishning umumiy vaqt byudjeti qat’iy bo‘lsa, yuqori darajadagi muddatdan foydalaning.
Bu opener obyektlari boshqa kutubxona mijozini, mavjud jarayonni yoki brauzer proksi sozlamalarini o‘zgartirmaydi.