Прокси для каждого запроса с HTTP-прокси-middleware Scrapy
Используйте метаданные запросов Scrapy и его прокси-middleware, прежде чем копировать старый собственный middleware аутентификации в краулер.
HTTP-прокси-middleware Scrapy читает прокси из метаданных запроса:
yield scrapy.Request(
'https://example.com/',
callback=self.parse,
meta={'proxy': 'http://203.0.113.10:8080'},
)
Замените конечную точку из документации и оставьте middleware включённым. Список HTTP-прокси предлагает публичные кандидаты для URL этого запроса. Это выбирает маршрут запроса; пулу прокси нужна отдельная логика выбора.
Аутентификация следует за выбранной конечной точкой
Встроенный middleware обрабатывает учётные данные, переданные через поддерживаемый URL прокси и связанный заголовок авторизации. Экранируйте зарезервированные символы URL и не записывайте этот URL в журнал.
Отдельный middleware не должен сохранять заголовок Basic для предыдущего прокси после смены конечной точки. Пусть один слой управляет маршрутом и его учётными данными вместе.
Порядок выбора и значения по умолчанию
Если собственный middleware загрузки выбирает прокси, запустите его до того, как встроенный прокси-middleware обработает запрос. Проверьте порядок и API установленного выпуска; устаревшие импорты scrapy.contrib относятся к более старым выпускам.
Окружение процесса также может задавать значения по умолчанию для конкретной схемы. Для намеренно прямого запроса используйте документированное особое поведение метаданных proxy: отсутствующий ключ не обязательно означает прямой доступ.
Проверьте фактический результат. Ошибка 407 относится к аутентификации прокси, а ограничение частоты или отказ в доступе сайта могут прийти после того, как маршрут отработал правильно.