# 자주 묻는 질문 ## 왜 브라우저 확장이 아니라 별도 프로그램인가 광고 팝업은 페이지 스크립트가 탭을 연 **뒤에** 판단해야 하는 경우가 많다. 사용자가 링크를 눌렀는지, 새 탭 주소가 그 링크 목적지와 같은지, 창이 얼마나 빨리 열렸는지를 한꺼번에 봐야 한다. TabBouncer는 Chrome DevTools Protocol(CDP)로 새 탭을 로드 전에 잠시 멈추고 판정할 수 있어 이 방식에 맞다. Manifest V3 확장은 서비스 워커가 수시로 멈추고, 새 탭을 로드 전에 붙잡는 기능이 없다. 확장과 네이티브 프로그램을 함께 두는 방식도 검토했지만 설치 단계가 복잡해져 지금 구조를 택했다. ## 평소 쓰는 Chrome 창은 왜 보호하지 않나 Chrome 136부터 보안 정책상 기본 프로필에서는 원격 디버깅을 켤 수 없다. 악성 프로그램이 사용자의 로그인 정보에 접근하지 못하게 하려는 조치다. 그래서 TabBouncer는 전용 프로필로 Chrome을 따로 띄워 그 창만 보호한다. 평소 창을 보호할 수는 없다. 대신 자주 가는 사이트를 **즐겨찾기 사이트**에 넣고 바탕화면 바로가기를 만들어 두면, 바로가기 한 번으로 전용 창에서 연다. ## uBlock Origin 같은 광고 차단 확장과 같이 써도 되나 된다. 역할이 다르다. 광고 차단 확장은 광고 스크립트와 요청을 미리 막는다. TabBouncer는 막히지 않고 열린 새 탭과 강제 이동을 사후에 처리한다. 전용 창에 확장을 설치하면 둘을 함께 쓸 수 있다. ## Edge나 Brave에서도 되나 Chrome이 없으면 Edge, Brave, Chromium을 차례로 찾는다. `chromePath`로 직접 지정해도 된다. - **Edge**: 브라우저 스모크 테스트 5개가 Edge 153에서 모두 통과했다. - **Brave, Chromium**: 같은 Chromium 기반이라 동작하도록 만들었지만 아직 확인하지 않았다. 실험적 지원으로 본다. - **Firefox**: 지원하지 않는다. ## 데이터를 어디로 보내나 어디로도 보내지 않는다. 업데이트 확인, 사용 통계, 오류 보고 전송이 없다. 로그와 통계는 `%LOCALAPPDATA%\TabBouncer`에만 저장한다. ## 왜 실행할 때마다 "감시 시작"을 눌러야 하나 처음 쓰는 사람이 모르는 사이에 정상 탭이 닫히는 일을 막으려는 안전 기본값이다. TabBouncer를 충분히 써 봤다면 **설정 → 일반 → 실행하면 바로 감시 시작**을 켠다. 전용 Chrome이 닫혀 있으면 감시 시작과 함께 열린다. ## 로그인·결제 팝업이 닫히면 어떻게 하나 TabBouncer는 주소 경로에 `oauth`, `authorize`, `signin`, `login`, `sso`, `checkout`, `payment`가 있거나 `saml`이 들어간 흐름을 보호한다. 알려진 광고 도메인이면 예외를 주지 않는다. 그래도 닫혔다면 최근 목록에서 그 항목을 선택하고 **선택한 사이트 등록**을 누른다. 설정의 기본 보호 목록(`whitelist`)에 로그인 도메인을 추가해도 된다. ## 성능이나 메모리에 영향이 있나 크지 않다. TabBouncer는 브라우저가 보내는 탭·이동 이벤트만 처리한다. 각 페이지에 넣는 스크립트는 클릭할 때만 짧은 기록을 보내는 수십 줄 코드다. 새 탭은 판정을 위해 최대 1.6초까지 멈출 수 있지만, 대부분 0.2초 안에 풀린다. ## 한 번에 닫는 탭 수에 제한이 있나 없다. 짧은 시간에 광고 탭이 10개 넘게 생겨도 광고로 판정한 탭은 모두 닫는다. 다만 전용 창의 마지막 일반 탭은 닫지 않는다. ## 광고 페이지가 잠깐 보였다가 닫힌다 사후 처리 방식이라 판정 전에 잠깐 보일 수 있다. "선차단"(`preemptiveBlock`)이 켜져 있으면 대부분 로드 전에 닫힌다. 페이지가 먼저 보인 뒤 이동하는 광고는 보이는 시간을 줄일 수 없다. ## 창을 닫으면 트레이로 숨기는지, 완전히 끝내는지 어떻게 고르나 누르는 곳에 따라 정해진다. | 누르는 곳 | 결과 | |---|---| | 창 오른쪽 위 **완전 종료** 버튼, 트레이 메뉴 **종료**, Ctrl+Q | 항상 완전히 종료 | | 창 제목 줄의 닫기(X) | 설정 "닫기(X)를 누르면 트레이로 숨기기"가 켜져 있으면(기본) 트레이로 숨기고, 끄면 종료 | | 창 제목 줄의 최소화 | 설정 "최소화하면 트레이로 숨기기"가 켜져 있으면(기본) 트레이로 숨기고, 끄면 작업 표시줄에 최소화 | 완전히 종료할 때 전용 Chrome이 연결돼 있으면 Chrome도 닫을지 묻는다. 설정 "종료할 때 전용 Chrome"에서 매번 묻기, 항상 닫기, 닫지 않기를 고른다. ## 화면을 영어로 바꾸거나 다른 언어를 더할 수 있나 **설정 → 일반 → 화면 언어**에서 English를 고르고 TabBouncer를 다시 실행한다. 활동 로그 문구도 영어로 바뀐다. 목록의 언어는 실행 파일 옆 `languages.json`에 등록된 언어이고, 파일에 새 언어를 더할 수도 있다. 자세한 형식은 [설정 레퍼런스](config.md#언어-파일-languagesjson)에 있다.