Controleer het waargenomen uitgaande IP vanuit een Chrome-extensie
Stuur een begrensde aanvraag vanaf de oorsprong van de extensie naar een gecontroleerd eindpunt en meld wat de test werkelijk aantoont.
Een proxytest in een Chrome-extensie heeft een bestemming met een voorspelbaar antwoord nodig. Gebruik een HTTPS-eindpunt dat je beheert, bijvoorbeeld een dat een klein JSON-object teruggeeft met het adres dat het ziet.
Voer de aanvraag uit vanuit een extensiecontext, zoals de service worker of een extensiepagina, met het eindpunt in de host permissions van het manifest:
"host_permissions": ["https://probe.example/*"]
Een hostmachtiging geeft een content script niet dezelfde rechten tussen oorsprongen. Houd de test in de extensiecontext in plaats van aan te nemen dat een geïnjecteerd script dezelfde aanvraag kan doen.
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);
}
}
De hostnaam is een plaatsaanduiding. De server en de client moeten het eens worden over het antwoordformaat en het cachebeleid. Behandel geweigerde aanvragen en misvormde antwoorden in de aanroeper van de extensie in plaats van ze als een geldig uitgaand adres te tonen.
Benoem de waarneming nauwkeurig
Een geslaagd resultaat toont aan dat deze aanvraag het eindpunt bereikte en de verwachte vorm van antwoord kreeg. Vergelijk het waargenomen adres met de route die je bedoelde, waar die vergelijking zinvol is. Het luister-IP van de geconfigureerde proxy hoeft niet zijn openbare uitgang te zijn.
Een PAC-regel of een uitzonderingenlijst kan de test rechtstreeks versturen terwijl een andere bestemming een proxy gebruikt. Het lezen van de proxyinstellingen levert configuratiebewijs; de aanvraag levert bewijs voor deze bestemming. Geen van beide alleen bewijst dat elk tabblad of elke URL dezelfde route volgt.
Houd time-out, HTTP-fout en een onverwachte body gescheiden in de interface. ‘Deze test is mislukt’ is nuttiger dan na één aanvraag de hele machine offline te verklaren.