Ler o endpoint do proxy e o IP de conexão do Scrapy
Use os metadados do pedido para o proxy selecionado, trate response.ip_address como informação do par fornecida pelo manipulador e verifique o IP de saída no destino.
Use o Request associado à resposta concluída ao inspecionar a rota selecionada. Mantenha três observações separadas:
| Campo | Significado |
|---|---|
response.request.meta.get('proxy') | O URL do proxy selecionado deste pedido, quando existe |
response.ip_address | Endereço fornecido pelo manipulador de download, possivelmente None |
| Relatório de origem de um destino de confiança | A 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.