Sonda proxy v rozšíření Chrome potřebuje cíl s předvídatelnou odpovědí. Použijte koncový bod HTTPS, který ovládáte, například takový, který vrací malý objekt JSON s adresou, kterou vidí.

Spusťte požadavek z kontextu rozšíření, například z jeho service workeru nebo stránky rozšíření, s koncovým bodem v host permissions manifestu:

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

Oprávnění hostitele nedává content scriptu stejná práva pro požadavky mezi původy. Ponechte sondu v kontextu rozšíření, místo abyste předpokládali, že vložený skript může odeslat stejný požadavek.

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);
  }
}

Název hostitele je zástupný. Server a klient se musí shodnout na formátu odpovědi a zásadách ukládání do mezipaměti. Odmítnuté požadavky a poškozené odpovědi ošetřete ve volajícím kódu rozšíření, ne je zobrazujte jako platnou výstupní adresu.

Pojmenujte pozorování přesně

Úspěšný výsledek prokazuje, že tento požadavek dorazil na koncový bod a obdržel očekávanou podobu odpovědi. Porovnejte pozorovanou adresu s trasou, kterou jste zamýšleli, tam kde má toto srovnání smysl. IP, na které nakonfigurovaná proxy naslouchá, nemusí být její veřejný výstup.

Pravidlo PAC nebo seznam obcházení může sondu odeslat přímo, zatímco jiný cíl používá proxy. Čtení nastavení proxy poskytuje důkaz o konfiguraci; požadavek poskytuje důkaz pro tento cíl. Ani jedno samo o sobě nedokazuje, že každá karta nebo URL sleduje stejnou trasu.

V rozhraní držte časový limit, chybu HTTP a neočekávané tělo oddělené. „Tato sonda selhala“ je užitečnější než po jednom požadavku prohlásit celý stroj za offline.

Související články