Vérifier l'IP de sortie observée depuis une extension Chrome
Envoyez une requête limitée depuis l'origine de l'extension vers un point de terminaison contrôlé et indiquez ce que la sonde établit réellement.
Une sonde de proxy dans une extension Chrome a besoin d'une destination à la réponse prévisible. Utilisez un point de terminaison HTTPS que vous contrôlez, par exemple celui qui renvoie un petit objet JSON contenant l'adresse qu'il observe.
Exécutez la requête depuis un contexte de l'extension, comme son service worker ou une page de l'extension, le point de terminaison figurant dans les host permissions du manifeste :
"host_permissions": ["https://probe.example/*"]
Une autorisation d'hôte ne donne pas à un content script les mêmes privilèges entre origines. Gardez la sonde dans le contexte de l'extension plutôt que de supposer qu'un script injecté peut faire la même requête.
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);
}
}
Le nom d'hôte est un espace réservé. Le serveur et le client doivent s'accorder sur le format de réponse et la politique de cache. Traitez les requêtes rejetées et les réponses mal formées dans l'appelant de l'extension plutôt que de les afficher comme une adresse de sortie valide.
Nommer l'observation avec précision
Un résultat réussi établit que cette requête a atteint le point de terminaison et reçu la forme de réponse attendue. Comparez l'adresse observée à la route que vous visiez, là où cette comparaison a un sens. L'IP d'écoute du proxy configuré n'est pas nécessairement sa sortie publique.
Une règle PAC ou une liste d'exceptions peut envoyer la sonde directement tandis qu'une autre destination utilise un proxy. La lecture des paramètres du proxy fournit une preuve de configuration ; la requête fournit une preuve pour cette destination. Aucune des deux à elle seule ne prouve que chaque onglet ou URL suit la même route.
Gardez distincts dans l'interface le délai d'attente, l'erreur HTTP et un corps inattendu. « Cette sonde a échoué » est plus utile que de déclarer toute la machine hors ligne après une seule requête.