Python urllib: бір opener үшін проксилерді өшіру
Басқа клиенттер мен процесс ортасын өзгертпей, ProxyHandler({}) арқылы тікелей қосылатын urllib opener жасаңыз.
Бір urllib opener тікелей қосылуы керек болса, ProxyHandler-ге бос бейнелеу беріңіз:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
with direct.open("https://example.com/", timeout=10) as response:
print(response.status)
Бос сөздік ешқандай прокси бағытын бермейді. Бейнелеуді бермесеңіз, өңдегіш проксилерді орта мен платформа параметрлерінен анықтайды. Бұл екі құру тәсілі әртүрлі саясатты білдіреді.
Мысал Python стандартты кітапханасын қолданып, қалыпты HTTPS тексеруін сақтайды. with блогы жауапты жабады, соның ішінде ерекшелік себебінен блоктан шыққанда да.
Бір қолданбадағы тікелей және прокси арқылы сұраулар
Екі opener шақырулар арасында орта айнымалыларын өзгертпей, екі саясатты ұстай алады:
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)
Кері ілмек мекенжайын өз HTTP проксиіңізбен ауыстырыңыз немесе прокси арқылы салыстыру үшін HTTP проксилер тізімінен үміткер таңдаңыз. Қызмет рұқсат етсе, ол HTTPS мақсатқа қосылымды CONNECT арқылы тасымалдай алады. Тыңдаушының хаттамасы мен аутентификация қолдауы өңдегішке сәйкес болуы тиіс.
Әдепкі opener-ді өзгертпеңіз
direct.open немесе proxied.open әдісін бағытқа жауапты нысан арқылы шақырыңыз. install_opener urllib көмекші шақырулары қолданатын процесс ауқымындағы әдепкі нысанды өзгертеді; сондықтан оны пайдаланатын кітапхана қатыссыз кодқа әсер етуі мүмкін. Жоғарыдағы оқшауланған opener үшін ол қажет емес.
timeout аргументі — операция параметрі, әр тасымалдаудың бүкіл нақты уақытын шектейтін мерзім емес. Тек жұмысқа қажет деректерді оқыңыз; жалпы уақыт бюджеті қатаң болса, жоғары деңгейдегі мерзімді қолданыңыз.
Бұл opener нысандары басқа кітапхананың клиентін, бар процесті немесе браузердің прокси параметрлерін өзгертпейді.