Адрес прокси меняется в журнале. Пункт назначения никогда не появляется в журнале доступа прокси. Проверьте, пропускает ли ваше промежуточное ПО запрос до загрузчика вообще.

В промежуточном ПО загрузчика Scrapy возврат Request означает повторное планирование этого запроса. Это не означает «продолжайте отправлять этот объект с метаданными, которые я только что изменил».

Для селектора, который выбирает только маршрут, важная форма такова:

def process_request(self, request):
    request.meta['proxy'] = self.choose_proxy()
    return None

Этот фрагмент показывает текущую форму перехватчика; используйте интерфейс промежуточного ПО, поддерживаемый установленной версией Scrapy. Селектор должен вернуть допустимую конечную точку и явно обработать недоступный пул. Публичный обход, разрешающий публичных посредников, может брать HTTP-кандидатов из списка HTTP-прокси для этого возвращаемого значения.

Возврат None позволяет остальному промежуточному ПО запросов и загрузчику продолжить. Возврат другого Request полезен, когда вы намеренно заменяете или повторяете работу, но требует причины и условия выхода.

Ротатор, который каждый раз возвращает один и тот же запрос, может многократно запускать собственный код выбора, так и не установив соединение с пунктом назначения. Увеличение тайм-аутов или открытие дополнительных портов прокси не исправит этот цикл управления.

Изучайте вход в промежуточное ПО, поведение при возврате и первую реальную сетевую попытку как отдельные события. Строка журнала «прокси выбран» доказывает только, что селектор сработал. Она не доказывает, что был отправлен запрос с выбранной конечной точкой.

Похожие статьи