모바일 파이어폭스에서 동영상 스트리밍 사이트를 이용하다 보면, 재생 버튼을 누르는 순간 알리익스프레스나 정체불명의 사이트로 강제 이동(Redirect)되는 현상을 자주 겪습니다.
처음에는 단순히 투명한 광고 막(Invisible Overlay)이 덮여있는 줄 알고 가볍게 덤볐다가, iframe과 난독화된 자바스크립트의 조합에 호되게 당한 뒤 결국 해결해낸 과정을 기록으로 남깁니다.
1. 첫 번째 가설: 투명 오버레이 (Invisible Overlay)
가장 흔한 케이스입니다. 재생 버튼 위에 z-index가 높은 투명한 <div>를 덮어씌워 놓고, 클릭을 가로채는 방식이죠.
- 시도: uBlock Origin의 ‘요소 지우기(Element Zapper)’ 도구로 화면을 찍어보았습니다.
- 결과: 실패.
- 화면상의 요소를 지워도, 재생 버튼을 누르면 여전히 납치되었습니다.
- 단순히 위에 덮인 막이 아니라, 플레이어 내부의 클릭 이벤트 자체가 조작되어 있음을 직감했습니다.
2. 두 번째 가설: iframe 내부의 악성 코드 분석
개발자 도구(또는 소스 보기)를 통해 뜯어보니 구조가 복잡했습니다. 동영상 플레이어는 iframe 안에 갇혀 있었고, 그 안에는 의심스러운 스크립트들이 가득했습니다.
특히 눈에 띈 것은 아래와 같은 코드였습니다.
<link rel="preconnect dns-prefetch" href="https://s.click.aliexpress.com">
이 코드는 브라우저에게 “곧 이 광고 사이트들에 접속할 거니까 미리 준비해(Preconnect)“라고 지시하고 있었습니다.
- 시도: uBlock의 HTML 필터링(
##^) 기능을 이용해 소스 코드 단계에서 저 태그들을 삭제해 보았습니다.
*##^link[rel*="preconnect"]
- 결과: 또 실패.
- 이유를 분석해보니, 저 태그들은 미끼거나 혹은 자바스크립트가 런타임(클릭하는 순간)에 동적으로 생성했다가 순식간에 삭제하는 방식이었습니다. 정적 필터로는 타이밍을 맞출 수 없었던 것입니다.
3. 세 번째 가설: 자바스크립트 납치 (Runtime Hijacking)
범인은 iframe 내부에서 돌아가는 난독화된 자바스크립트였습니다. 사용자가 클릭하는 순간 window.location을 변경하거나 window.open으로 새 창을 띄우는 방식입니다.
게다가 iframe 내부는 ‘격리된 공간’이라 외부에서 선택자(##)로 요소를 집어내기도 까다롭습니다. 결국 원인(스크립트)을 제거하는 게 불가능하다면, 결과(이동)를 막자는 전략으로 선회했습니다.
4. 최종 해결책: ‘사이트 이탈’ 자체를 봉쇄 (Nuclear Option)
uBlock Origin의 고급 필터 기능을 사용하여, “이 사이트(도메인)에서 외부 사이트(3rd-party)로 나가는 모든 문을 용접”해버리기로 했습니다.
이 방법은 원인이 무엇이든(오버레이든, JS든, iframe이든) 결과적으로 페이지 이동을 불가능하게 만듭니다.
적용한 필터 코드
(uBlock Origin 설정 > 내 필터)
※ 주의: 현재사이트주소.com 부분에는 실제 문제가 발생하는 사이트 도메인을 적어야 합니다.
! 1. [팝업 권한 박탈] 이 사이트에서는 그 어떤 새 창(Popup)도 열 수 없음
현재사이트주소.com$popup
! 2. [JS 무력화] window.open 함수가 실행되면 무조건 무시함 (인자 불문)
현재사이트주소.com##+js(no-window-open-if)
! 3. [핵심] 해당 도메인에서 외부(3rd-party)로 이동하는 문서 요청($doc) 전면 차단
! 영상 파일(media/object)은 $doc이 아니므로 재생은 되지만, 납치 페이지 이동은 막힘
||*^$doc,third-party,domain=현재사이트주소.com
결론 및 요약
단순한 광고 차단으로 해결되지 않을 때는 다음 단계를 의심해야 합니다.
- 단순 오버레이인가? (요소 지우기로 해결 가능)
- HTML 태그가 있는가? (정적 HTML 필터링 시도)
- 동적 스크립트/iframe인가? (가장 악질)
마지막 경우라면, 광고 스크립트와 숨바꼭질을 하는 것보다 네트워크 규칙($doc,third-party)을 통해 페이지 이동 권한 자체를 제어하는 것이 가장 확실한 해결책이었습니다.
이제 쾌적하게 영상을 시청할 수 있게 되었습니다. 저와 같은 고통을 겪는 분들에게 도움이 되기를 바랍니다.