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. Гэта ілюструе маршрутызацыю запытаў, а не гарантыю, што кожнае злучэнне, звязанае з задачай аглядання, ізалявана па ўкладцы. Маршрутызацыя праз кантэйнеры, уласцівая пашырэнню, — іншая мадэль для ацэнкі.

Падобныя артыкулы