Comprueba la IP de salida observada desde una extensión de Chrome
Envía una solicitud acotada desde el origen de la extensión a un extremo controlado e informa de lo que la sonda demuestra realmente.
Una sonda de proxy en una extensión de Chrome necesita un destino con una respuesta predecible. Usa un extremo HTTPS que controles, como uno que devuelva un objeto JSON pequeño con la dirección que observa.
Ejecuta la solicitud desde un contexto de la extensión, como su service worker o una página de la extensión, con el extremo en los host permissions del manifiesto:
"host_permissions": ["https://probe.example/*"]
El permiso de host no otorga a un content script los mismos privilegios entre orígenes. Mantén la sonda en el contexto de la extensión en lugar de suponer que un script inyectado puede hacer la misma solicitud.
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);
}
}
El nombre de host es un marcador de posición. El servidor y el cliente deben acordar el formato de respuesta y la política de caché. Gestiona las solicitudes rechazadas y las respuestas mal formadas en el llamador de la extensión en lugar de mostrarlas como una dirección de salida válida.
Nombra la observación con precisión
Un resultado correcto demuestra que esta solicitud llegó al extremo y recibió la forma de respuesta esperada. Compara la dirección observada con la ruta que pretendías, cuando esa comparación tenga sentido. La IP de escucha del proxy configurado no tiene por qué ser su salida pública.
Una regla PAC o una lista de omisión puede enviar la sonda directamente mientras otro destino usa un proxy. Leer la configuración del proxy aporta pruebas de configuración; la solicitud aporta pruebas para este destino. Ninguna de las dos por sí sola demuestra que cada pestaña o URL siga la misma ruta.
Mantén un tiempo de espera, un error HTTP y un cuerpo inesperado separados en la interfaz. «Esta sonda falló» es más útil que declarar toda la máquina sin conexión tras una sola solicitud.