Una sonda de proxy en una extensió de Chrome necessita una destinació amb una resposta previsible. Utilitza un punt final HTTPS que controlis, com ara un que retorni un objecte JSON petit amb l'adreça que observa.

Executa la petició des d'un context de l'extensió, com ara el seu service worker o una pàgina de l'extensió, amb el punt final a les host permissions del manifest:

"host_permissions": ["https://probe.example/*"]

El permís d'amfitrió no atorga a un content script els mateixos privilegis entre orígens. Mantén la sonda al context de l'extensió en lloc de suposar que un script injectat pot fer la mateixa petició.

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 nom d'amfitrió és un marcador de posició. El servidor i el client han d'acordar el format de resposta i la política de memòria cau. Gestiona les peticions rebutjades i les respostes mal formades al cridador de l'extensió en lloc de mostrar-les com una adreça de sortida vàlida.

Anomena l'observació amb precisió

Un resultat correcte demostra que aquesta petició va arribar al punt final i va rebre la forma de resposta esperada. Compara l'adreça observada amb la ruta que volies, quan aquesta comparació té sentit. La IP d'escolta del proxy configurat no ha de ser necessàriament la seva sortida pública.

Una regla PAC o una llista d'exclusions pot enviar la sonda directament mentre una altra destinació utilitza un proxy. Llegir la configuració del proxy aporta proves de configuració; la petició aporta proves per a aquesta destinació. Cap de les dues per si sola no demostra que cada pestanya o URL segueixi la mateixa ruta.

Mantén un temps d'espera, un error HTTP i un cos inesperat separats a la interfície. «Aquesta sonda ha fallat» és més útil que declarar tota la màquina fora de línia després d'una petició.

Articles relacionats