Праверка назіранага выходнага IP з пашырэння Chrome
Адпраўце абмежаваны запыт з крыніцы пашырэння да кантраляванай канчатковай кропкі і паведаміце, што менавіта даказвае праверка.
Праверка проксі ў пашырэнні Chrome патрабуе прызначэння з прадказальным адказам. Выкарыстоўвайце канчатковую кропку HTTPS, якую вы кантралюеце, напрыклад такую, што вяртае невялікі JSON-аб'ект з адрасам, які яна назірае.
Выконвайце запыт з кантэксту пашырэння, напрыклад з service worker або старонкі пашырэння, размясціўшы канчатковую кропку ў host permissions маніфеста:
"host_permissions": ["https://probe.example/*"]
Дазвол хоста не дае скрыпту змесціва тых жа правоў міжкрынічнага доступу. Трымайце праверку ў кантэксце пашырэння, а не мяркуйце, што ўкаранёны скрыпт можа зрабіць такі ж запыт.
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);
}
}
Імя хоста — гэта запаўняльнік. Сервер і кліент павінны дамовіцца пра фармат адказу і палітыку кэшавання. Апрацоўвайце адхіленыя запыты і пашкоджаныя адказы ў выклікальнай частцы пашырэння, а не паказвайце іх як сапраўдны выходны адрас.
Называйце назіранне дакладна
Паспяховы вынік даказвае, што гэты запыт дасягнуў канчатковай кропкі і атрымаў адказ чаканай формы. Параўноўвайце назіраны адрас з маршрутам, які вы мелі на ўвазе, там дзе гэта параўнанне мае сэнс. IP, на якім слухае наладжаны проксі, не абавязаны быць яго публічным выхадам.
Правіла PAC або спіс абыходу могуць адправіць праверку напрамую, пакуль іншае прызначэнне выкарыстоўвае проксі. Чытанне налад проксі дае доказы канфігурацыі; запыт дае доказы для гэтага прызначэння. Ні адно з іх само па сабе не даказвае, што кожная ўкладка або URL ідзе тым жа маршрутам.
Трымайце тайм-аўт, памылку HTTP і нечаканае цела адказу асобна ў інтэрфейсе. «Гэтая праверка не ўдалася» карысней, чым аб'яўляць усю машыну па-за сеткай пасля аднаго запыту.