Выбор прокси 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, а не как постоянный маршрут, привязанный к первой странице.