Відсутність X-ProxyMesh-IP у HTTPS-зворотному виклику Scrapy не доводить прямого маршрутизування. У тунельованому HTTPS ProxyMesh розміщує заголовки маршрутизації у відповіді CONNECT; пізніша відповідь сайту перебуває всередині TLS і не включає автоматично ці попередні метадані.

Там, де заголовок видно у зворотному виклику, читайте його умовно:

exit_ip = response.headers.get(b'X-ProxyMesh-IP')
if exit_ip is not None:
    self.logger.info('Reported exit IP: %s', exit_ip.decode('ascii'))

Це вихід, про який повідомляє постачальник для цього обміну, а не налаштоване ім'я вхідного хоста.

Якщо потрібні метадані тунелю, використовуйте сумісну інтеграцію обробника, яка розкриває заголовки CONNECT. ProxyMesh підтримує одну саме для цієї мети; перевірте підтримувану версію Scrapy та обробник завантаження. Розбір павуком не може виявити заголовки, яких транспорт ніколи не надавав.

Пов'язуйте метадані з їхнім з'єднанням. Повторне використання тунелю не створює ще однієї відповіді CONNECT для кожної сторінки. Щоб отримати незалежну адресу джерела, яку бачить призначення, огляньте вхідне з'єднання цього призначення, а не вважайте заголовок постачальника універсальним визначником IP.

Схожі статті