Чому заголовок виходу ProxyMesh може бути відсутній у Scrapy
ProxyMesh може надсилати метадані маршрутизації в CONNECT ще до того, як Scrapy отримає зашифровану відповідь сайту. Перевірте етап відповіді, який справді їх несе.
Відсутність 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.