Provjerite uočenu izlaznu IP adresu iz Chrome ekstenzije
Pošaljite ograničen zahtjev iz porijekla ekstenzije na kontrolisanu krajnju tačku i izvijestite šta provjera zaista dokazuje.
Provjera proxyja u Chrome ekstenziji treba odredište s predvidivim odgovorom. Koristite HTTPS krajnju tačku koju kontrolišete, poput one koja vraća mali JSON objekat s adresom koju vidi.
Pokrenite zahtjev iz konteksta ekstenzije, npr. iz njenog service workera ili stranice ekstenzije, s krajnjom tačkom u host permissions manifesta:
"host_permissions": ["https://probe.example/*"]
Dozvola za host ne daje content scriptu iste privilegije za cross-origin zahtjeve. Držite provjeru u kontekstu ekstenzije umjesto da pretpostavljate da ubrizgana skripta može poslati isti zahtjev.
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);
}
}
Ime hosta je rezervisano mjesto. Server i klijent moraju se dogovoriti o formatu odgovora i politici keširanja. Odbijene zahtjeve i neispravne odgovore obradite u pozivaocu ekstenzije, a ne prikazujte ih kao valjanu izlaznu adresu.
Tačno imenujte zapažanje
Uspješan rezultat dokazuje da je ovaj zahtjev stigao do krajnje tačke i dobio očekivani oblik odgovora. Uporedite uočenu adresu s rutom koju ste namjeravali, gdje to poređenje ima smisla. IP adresa na kojoj konfigurisani proxy sluša ne mora biti njegov javni izlaz.
PAC pravilo ili lista zaobilaženja može poslati provjeru direktno dok drugo odredište koristi proxy. Čitanje proxy postavki daje dokaze o konfiguraciji; zahtjev daje dokaze za ovo odredište. Ni jedno samo po sebi ne dokazuje da svaki tab ili URL slijedi istu rutu.
Držite istek vremena, HTTP grešku i neočekivano tijelo odvojeno u interfejsu. „Ova provjera nije uspjela“ korisnije je od proglašavanja cijele mašine van mreže nakon jednog zahtjeva.