이 이벤트가 선택한 프록시를 적용해야 할 때 Manifest V3 서비스 워커의 최상위 수준에서 onStartup과 onInstalled을 동기적으로 등록하세요. 의도적으로 하나의 경로에 고정된 확장 프로그램의 경우:

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는 프록시 권한을 선언하고 이 백그라운드 워커의 이름을 지정해야 합니다. 프록시 인증이 없는 허용된 공개 브라우징 경로라면 엔드포인트를 HTTP 프록시 목록의 후보로 바꾸고 포트는 정수로 유지하세요.

onStartup은 확장 프로그램이 설치된 상태의 프로필 시작입니다. onInstalled에는 업데이트도 포함되며, 압축 해제된 확장 프로그램의 다시 로드도 업데이트로 간주됩니다. 창 생성 이벤트는 각 창을 설명하며 한 세션에서 여러 번 발생할 수 있습니다.

확장 프로그램에 저장된 프로필이나 끄기 스위치가 있다면, 업데이트할 때마다 하드코딩된 기본값을 다시 설정하지 말고 핸들러가 그 선택을 불러와 적용하게 하세요. 리스너 등록은 최상위 수준에 그대로 두며, 비동기 작업은 Chrome이 핸들러를 호출할 때 시작할 수 있습니다.

개발 중에는 설치와 프로필 시작을 따로 시험하고, 각각의 구성 결과를 확인하세요. 이 둘은 두 가지 초기화 경로이며, 다른 창을 열어 얻는 증거가 아닙니다.

관련 글