Почему заголовок выхода 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.