За да прегледате избрания маршрут, използвайте Request, свързания с приключилия отговор. Дръжте три наблюдения отделно:

ПолеЗначение
response.request.meta.get('proxy')Избраният прокси URL на тази заявка, когато е наличен
response.ip_addressАдрес, предоставен от обработчика за изтегляне, възможно None
Доклад за източника от доверена дестинацияПубличният източник, наблюдаван там

Вътре в callback пропускайте частите от URL с идентификационни данни от рутинната диагностика:

from urllib.parse import urlsplit

proxy = response.request.meta.get('proxy')
proxy_host = urlsplit(proxy).hostname if proxy else None
self.logger.info(
    'target_host=%s proxy_host=%s peer_ip=%s',
    urlsplit(response.url).hostname, proxy_host, response.ip_address,
)

В обработчика HTTP/1.1 на Scrapy 2.13.3 адресът идва от връстника на връзката на отговора, а не от услуга за изходен IP. Някои пътища, включително отговори с нулева дължина, могат да го оставят None. Други обработчици могат да го попълват различно. None сам по себе си не доказва директно маршрутизиране.

За проверка на изхода заявете доверена крайна точка при предвидената прокси политика и пазете идентичността на заявката заедно с наблюдението. Ротиращият middleware може да даде на следващата проверка друга крайна точка.

Пренасочванията създават още една заявка. Крайните метаданни описват този етап; проверявайте историята на пренасочванията и всяко повторно избиране от middleware, вместо да ги приемате за доказателство за маршрута на първия URL.

Подобни статии