Use o Request associado à resposta concluída ao inspecionar a rota selecionada. Mantenha três observações separadas:

CampoSignificado
response.request.meta.get('proxy')O URL do proxy selecionado deste pedido, quando existe
response.ip_addressEndereço fornecido pelo manipulador de download, possivelmente None
Relatório de origem de um destino de confiançaA origem pública observada ali

Dentro de um callback, omita as partes do URL com credenciais do diagnóstico habitual:

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,
)

No manipulador HTTP/1.1 do Scrapy 2.13.3 o endereço vem do par da conexão da resposta, não de um serviço de IP de saída. Alguns caminhos, incluindo respostas de comprimento zero, podem deixá-lo como None. Outros manipuladores podem preenchê-lo de forma diferente. None por si só não prova encaminhamento direto.

Para verificar a saída, consulte um endpoint de confiança segundo a política de proxy pretendida e guarde a identidade do pedido junto da observação. Um middleware rotativo pode dar outro endereço a uma verificação posterior.

Os redirecionamentos também criam outro pedido. Os metadados finais descrevem essa etapa; reveja o histórico de redirecionamentos e qualquer nova seleção do middleware em vez de o tomar como prova da rota do primeiro URL.

Artigos relacionados