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

Схожі статті