Применяйте прокси Chrome в событиях запуска расширения
Регистрируйте обработчики запуска и установки для прокси-расширения Manifest V3 вместо привязки инициализации к новому окну браузера.
Регистрируйте onStartup и onInstalled синхронно на верхнем уровне service worker Manifest V3, когда эти события должны применить выбранный прокси. Для расширения, намеренно закреплённого за одним маршрутом:
function applyProxy() {
chrome.proxy.settings.set({
value: {
mode: 'fixed_servers',
rules: {
singleProxy: {
scheme: 'http',
host: 'proxy.example',
port: 8080,
},
},
},
scope: 'regular',
}, () => {
if (chrome.runtime.lastError) {
console.error(chrome.runtime.lastError.message);
}
});
}
chrome.runtime.onStartup.addListener(applyProxy);
chrome.runtime.onInstalled.addListener(applyProxy);manifest должен объявить разрешение на прокси и назвать этот фоновый worker. Для разрешённого маршрута публичного просмотра без аутентификации прокси замените конечную точку кандидатом из списка HTTP-прокси, оставив порт целым числом.
onStartup — это запуск профиля при установленном расширении. onInstalled включает и обновления, в том числе перезагрузку распакованного расширения, которая считается обновлением. Событие создания окна описывает каждое окно и может срабатывать многократно в рамках одной сессии.
Если у расширения есть сохранённые профили или выключатель, пусть обработчик загружает и применяет этот выбор, а не сбрасывает жёстко заданное значение по умолчанию при каждом обновлении. Регистрация слушателей остаётся на верхнем уровне; асинхронная работа может начаться, когда Chrome вызовет обработчик.
Во время разработки проверяйте установку и запуск профиля по отдельности, сверяя результат конфигурации для каждого. Это два пути инициализации, а не доказательство, полученное открытием другого окна.