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 объекттери башка китепкананын кардарын, бар процессти же браузердин прокси жөндөөлөрүн өзгөртпөйт.