Расширения 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-прокси для разрешённого теста в публичной вкладке. Нужны разрешение proxy и разрешения хоста, покрывающие отфильтрованные URL.
Это отличается от скрипта PAC, стандартное решение которого по URL и хосту не определяет вкладку браузера. Это также отличается от смены глобального ручного прокси Firefox, пока загружается другая вкладка.
Учитывайте базовую конфигурацию браузера: значение direct в ProxyInfo не переопределяет прокси, заданный пользователем. Проверяйте базовую политику и поведение при отказе, а не обещайте, что каждый несовпавший запрос пойдёт напрямую.
У части трафика нет достоверных сведений о вкладке, и Mozilla документирует неточную привязку для прокси-соединений по HTTP/3. Это иллюстрирует маршрутизацию запросов, а не гарантию того, что каждое соединение, связанное с задачей просмотра, изолировано по вкладке. Маршрутизация через контейнеры, специфичная для расширения, — ещё одна модель для оценки.