Verifique o IP de saída observado a partir de uma extensão do Chrome
Envie uma solicitação limitada a partir da origem da extensão para um endpoint controlado e informe o que a sonda realmente estabelece.
Uma sonda de proxy numa extensão do Chrome precisa de um destino com resposta previsível. Use um endpoint HTTPS que controle, como um que devolva um pequeno objeto JSON com o endereço que observa.
Execute a solicitação a partir de um contexto da extensão, como o service worker ou uma página da extensão, com o endpoint nas host permissions do manifesto:
"host_permissions": ["https://probe.example/*"]
Uma permissão de host não concede a um content script os mesmos privilégios entre origens. Mantenha a sonda no contexto da extensão em vez de presumir que um script injetado pode fazer a mesma solicitação.
async function probe() {
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), 5000);
try {
const response = await fetch('https://probe.example/ip', {
cache: 'no-store',
signal: controller.signal,
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const result = await response.json();
if (typeof result.ip !== 'string') throw new Error('Bad probe body');
return result.ip;
} finally {
clearTimeout(timer);
}
}
O nome do host é um marcador de posição. O servidor e o cliente devem concordar sobre o formato da resposta e a política de cache. Trate as solicitações rejeitadas e as respostas malformadas no chamador da extensão em vez de exibi-las como um endereço de saída válido.
Nomeie a observação com precisão
Um resultado bem-sucedido estabelece que esta solicitação chegou ao endpoint e recebeu a forma de resposta esperada. Compare o endereço observado com a rota pretendida, onde essa comparação faz sentido. O IP de escuta do proxy configurado não precisa ser a sua saída pública.
Uma regra PAC ou uma lista de exceções pode enviar a sonda diretamente enquanto outro destino usa um proxy. Ler as configurações do proxy fornece evidência de configuração; a solicitação fornece evidência para este destino. Nenhuma das duas sozinha prova que cada aba ou URL siga a mesma rota.
Mantenha o tempo limite, o erro HTTP e um corpo inesperado separados na interface. «Esta sonda falhou» é mais útil do que declarar a máquina inteira offline após uma única solicitação.