Пашырэнні Firefox могуць выбіраць проксі па ID укладкі запыту
Выкарыстоўвайце proxy.onRequest і дакладныя звесткі tabId для маршрутызацыі па ўкладках, з абмежаваннямі для рэзервовай палітыкі і запытаў без прывязкі да ўкладкі.
API пашырэнняў Firefox можа прымаць рашэнне аб проксі для асобнага запыту. Калі запыт мае дакладную прывязку да ўкладкі, пашырэнне можа параўнаць яго ID укладкі з укладкай, якую выбраў карыстальнік.
Для фонавага скрыпта існуючага пашырэння Firefox фрагмент маршрутызацыі можа выглядаць так:
browser.proxy.onRequest.addListener(details => {
if (details.tabId === selectedTabId) {
return {type: 'http', host: 'proxy.example', port: 8080};
}
return {type: 'direct'};
}, {urls: ['<all_urls>']});Пашырэнне перадае selectedTabId з уласнай логікі выбару карыстальніка. Яго HTTP-хост і цэлалікавы порт могуць паходзіць з спісу HTTP-проксі для дазволенага тэсту публічнай укладкі. Патрэбны дазвол проксі і дазволы хоста, якія пакрываюць адфільтраваныя URL.
Гэта адрозніваецца ад скрыпта PAC, стандартнае рашэнне якога па URL і хосце не вызначае ўкладку браўзера. Гэта таксама адрозніваецца ад змены глабальнага ручнога проксі Firefox, пакуль загружаецца іншая ўкладка.
Улічвайце базавую канфігурацыю браўзера: значэнне direct у ProxyInfo не перакрывае проксі, настроены карыстальнікам. Правярайце базавую палітыку і паводзіны пры адказе, а не абяцайце, што кожны несупастаўлены запыт ідзе напрамую.
Некаторы трафік не мае надзейных звестак пра ўкладку, і Mozilla дакументуе недакладную прывязку для проксі-злучэнняў HTTP/3. Гэта ілюструе маршрутызацыю запытаў, а не гарантыю, што кожнае злучэнне, звязанае з задачай аглядання, ізалявана па ўкладцы. Маршрутызацыя праз кантэйнеры, уласцівая пашырэнню, — іншая мадэль для ацэнкі.