Избор на прокси на Requests за един сайт
Дайте на едно име на хост различно прокси в Requests и разберете границите на съвпадение и реда на резервните варианти.
Един сайт се нуждае от различно прокси от останалите ви HTTPS заявки. Requests може да изрази този избор в самия речник на прокситата:
routes = {
"https://reports.example": "http://reports-proxy.example:8080",
"https": "http://default-proxy.example:8080",
}
response = requests.get(
"https://reports.example/monthly",
proxies=routes,
timeout=(5, 20),
)
response.raise_for_status()
За тази дестинация печели ключът, специфичен за името на хоста. Друго HTTPS име на хост използва общия за схемата запис. Стойностите описват връзката с проксито, така че HTTPS дестинация може правилно да се съпостави с URL на HTTP прокси. Когато това са разрешени маршрути за публични сайтове без профили за прокси, списъкът с HTTP проксита може да предостави кандидати за тези стойности; дръжте всяко правило за дестинация явно.
Съпоставяйте име на хост, а не URL на ресурс
В Requests 2.32.5 специфичният ключ се изгражда от схемата на дестинацията и анализираното име на хост. Той не съдържа пътя, заявката или порта.
Добавянето на /monthly към ключа на речника няма да ограничи правилото до този път. По същия начин https://reports.example:8443 не е ключ, специфичен за порт, който този селектор разпознава. Правилото за име на хост се прилага и когато URL на дестинацията използва друг порт.
В това търсене няма разширяване с шаблони. Правило за reports.example не покрива автоматично поддомейн. Използвайте явно решение за маршрутизиране извън този прост речник, когато политиката изисква съвпадение по път, порт или наставка.
Знайте кой резервен вариант идва следващ
Реализацията проверява ключовете в този ред: scheme://hostname, scheme, all://hostname, после all. Затова общ запис HTTPS за схемата има предимство пред запис за име на хост за всички схеми. Поставете правило за име на хост, специфично за схема, първо в дизайна си, когато това е желаното изключение.
Отчитайте и как вашата Session обединява настройките по подразбиране и тези от средата. Подаването на тези два явни записа със заявката прави предназначените им маршрути ясни, но не дефинира политика за всяка друга схема на дестинация.
Пренасочването може да въведе друго име на хост и изборът на прокси е от значение и за тази нова дестинация. Четете правилото като решение за всеки заявен URL, а не като постоянен маршрут, прикрепен към първата страница.