본문으로 건너뛰기
피드

광고를 숨기는 대신 ‘OBEY’ 타일로 바꿔버리는 uBO Lite 포크

open-source 약 7분

uBlock Origin Lite를 포크해서, 숨겨진 광고 자리에 영화 ‘화성인 지구 정복’의 선전 문구를 흰 타일로 띄우는 장난감성 확장 프로그램이 나왔다. 네트워크 차단으로 사라진 광고는 건드릴 수 없고, CSS 기반 cosmetic filtering으로 잡힌 광고 요소만 DOM에서 찾아 바꾼다.

  • 1

    uBO Lite의 cosmetic filtering 동작을 패치해 광고 요소를 숨기지 않고 흰 박스와 문구 오버레이로 대체함

  • 2

    문구는 ‘OBEY’, ‘CONSUME’, ‘WATCH TV’, ‘NO INDEPENDENT THOUGHT’ 같은 영화 속 슬로건에서 랜덤 선택됨

  • 3

    Basic 모드에서는 네트워크 차단이 대부분이라 타일이 안 보이고, Optimal 또는 Complete 모드에서 cosmetic-filtered 광고에만 적용됨

  • 4

    Node 22가 필요하며 Chromium, Firefox, Edge, Safari 빌드를 만들 수 있지만 공식 uBlock Origin 제품은 아님

  • uBlock Origin Lite를 포크해서, 광고를 그냥 숨기는 대신 영화 ‘They Live’풍 선전 문구 타일로 바꾸는 확장 프로그램이 나옴

    • 광고 자리에 흰 박스가 생기고, 그 위에 OBEY, CONSUME, WATCH TV, SLEEP, SUBMIT, CONFORM, BUY, NO INDEPENDENT THOUGHT 같은 문구가 랜덤으로 박힘
    • 원작 아이디어는 만든 사람이 2015년에 블로그에 썼던 ‘They Live adblock mode’에서 온 것이라고 함
  • 핵심은 uBO Lite의 cosmetic filtering을 살짝 비트는 것임

    • 원래 uBO Lite는 매칭된 광고 요소에 display: none !important 같은 CSS를 주입해서 안 보이게 만듦
    • 이 포크는 그 주입 지점을 패치해서, 요소를 숨기는 대신 흰색 마스크와 ::after 오버레이를 적용함
    • 오버레이 문구는 data-ubol-they-live 속성에서 읽고, DOM을 훑으면서 각 광고 요소에 랜덤 문구를 붙임
  • 단, 모든 광고가 ‘OBEY’ 타일로 바뀌는 건 아님

    • uBO Lite의 기본값인 Basic filtering은 네트워크 레벨에서 광고 요청을 막는 방식이라 DOM 요소 자체가 안 생김
    • DOM 요소가 없으면 꾸밀 대상도 없어서, 그냥 일반 광고 차단기처럼 빈 공간만 남음
    • 타일을 보고 싶으면 uBO Lite 대시보드에서 해당 사이트의 필터링 모드를 Optimal 또는 Complete로 올리고 새로고침해야 함

중요

> 이 확장 프로그램이 바꾸는 건 네트워크 차단 광고가 아니라 cosmetic-filtered 광고임. 즉 ‘광고 요청을 막은 결과’가 아니라 ‘페이지에 남은 광고 DOM을 어떻게 보여줄지’가 포인트임.

  • 설치는 아직 수동 언팩 확장 프로그램 방식임

    • Releases 페이지에서 uBOLite_theylive.chromium.zip을 받고 압축을 푼 뒤, Chrome 계열 브라우저의 chrome://extensions에서 Developer mode를 켜고 Load unpacked로 폴더를 선택함
    • 확장 프로그램은 해당 폴더 경로에서 직접 로드되므로, 압축을 푼 폴더를 지우면 안 됨
  • 직접 빌드하려면 Node 22가 필요함

    • 저장소를 --recursive로 클론한 뒤 davmlaw/uBlock 서브모듈 안에서 빌드 스크립트를 돌리는 구조임
    • 예시는 tools/make-mv3.sh chromium이고, 대상은 firefox, edge, safari도 가능하다고 적혀 있음
    • 빌드 결과물은 uBlock/dist/build/uBOLite.chromium/에 생기며, 이것도 unpacked extension으로 로드함
  • 건드린 파일도 꽤 명확하게 공개돼 있음

    • 새 파일 platform/mv3/extension/js/scripting/they-live.js에는 문구 목록, CSS 생성기, DOM 태깅 로직이 들어감
    • css-specific, css-generic, procedural-api 쪽 호출부도 패치됨
    • scripting-manager.js에서는 they-live.js를 먼저 등록해서 소비자 코드보다 앞서 동작하게 함
  • 주의점도 있음. 이건 공식 uBlock Origin 제품이 아니라 개인 취미 포크임

    • 문제가 생겨도 uBO 쪽에 이슈를 올리면 안 된다고 못 박아둠
    • 원래 숨겨져야 할 요소를 다시 보이게 만드는 방식이라, 사이트 CSS가 광고 슬롯이 접힌다고 가정한 경우 레이아웃이 흔들릴 수 있음
    • 사용자 정의 cosmetic filter는 기존처럼 그냥 숨겨지고, ‘OBEY’ 처리는 적용되지 않음

기술 맥락

  • 이 프로젝트가 건드린 지점은 광고 차단의 ‘요청 차단’이 아니라 ‘화면 표시’ 레이어예요. 네트워크에서 광고를 막아버리면 DOM에 요소가 안 남기 때문에, 문구 타일로 바꿀 대상 자체가 없거든요.

  • 그래서 Basic 모드에서는 기대한 효과가 잘 안 보여요. uBO Lite가 기본적으로 네트워크 차단을 많이 쓰기 때문이고, 이 포크가 재미를 발휘하는 건 CSS로 숨겨지는 cosmetic filtering 영역이에요.

  • 구현 방식도 꽤 브라우저 확장답게 현실적이에요. CSS 주입부를 바꿔 흰 박스와 ::after 오버레이를 만들고, MutationObserver로 늦게 붙는 광고 DOM까지 따라가야 동적 페이지에서도 빠지는 광고가 줄어들거든요.

  • 개발자 입장에서 볼 만한 포인트는 ‘차단기를 새로 만든 것’이 아니라 기존 uBO Lite 파이프라인의 특정 단계만 바꿨다는 점이에요. 덕분에 필터 매칭 같은 무거운 문제는 그대로 upstream에 맡기고, 표시 방식만 장난스럽게 바꿀 수 있어요.

광고 차단기를 ‘없애는 도구’가 아니라 ‘보이게 비꼬는 도구’로 바꾼 케이스라 꽤 개발자 감성에 맞다. 실용성보다 Manifest V3 시대 uBO Lite 내부가 cosmetic filtering을 어떻게 처리하는지 훔쳐보는 재미가 더 큼.

댓글

댓글

댓글을 불러오는 중...

open-source

뱀부랩, 오픈소스 슬라이서 개발자에게 법적 압박 걸었다가 역풍 맞음

3D 프린터 제조사 뱀부랩이 OrcaSlicer-BambuLab 개발자에게 중단 요구서를 보내면서 오픈소스와 수리권 커뮤니티의 반발을 샀다. GamersNexus와 Louis Rossmann은 개발자의 허락을 받아 소프트웨어를 다시 호스팅하고, 소송이 걸리면 각각 1만 달러씩 법률 지원을 하겠다고 나섰다.

open-source

OrcaSlicer 포크, Bambu Lab 프린터의 인터넷 연결 기능 되살림

FULU Foundation의 OrcaSlicer-bambulab 포크가 Bambu Lab 프린터에서 LAN 전용 제한 없이 BambuNetwork 기반 인터넷 연결을 다시 지원한다고 밝힘. Windows에서는 WSL 2 설정이 필요하고, Linux에서는 일반 설치만으로 충분하다고 안내함.

open-source

코넬대가 공개한 정확히 2,000줄짜리 교육용 운영체제

코넬대 기반 프로젝트인 egos-2000은 학생이 교육용 운영체제 전체 코드를 직접 읽을 수 있게 만드는 걸 목표로 한다. C, 헤더, 어셈블리, make 파일을 합쳐 정확히 2,000줄이며, QEMU와 RISC-V 보드에서 동작하고 9개 코스 프로젝트가 붙어 있다. 운영체제 수업에서 ‘작지만 전체 구조가 보이는 코드베이스’가 필요했던 사람에게 꽤 반가운 자료다.

open-source

이맥스가 Git 대신 Bazaar를 붙잡았던 6년짜리 오픈소스 드라마

이맥스는 2008년 CVS에서 벗어나면서 Git 대신 GNU 프로젝트인 Bazaar를 선택했고, 이 결정은 성능 벤치마크와 개발자 반발을 압도한 정치적 판단에 가까웠다. Bazaar는 느리고 유지보수도 흔들렸지만, GNU 패키지는 GNU 도구를 써야 한다는 원칙 때문에 전환은 2014년까지 미뤄졌다. 결국 ELPA 브랜치 문제와 Bazaar 개발 중단, 변환 스크립트 준비 끝에 이맥스는 Git으로 옮겨갔다.

open-source

현대차·기아, 오픈소스 특허 방어망 넓혀 소프트웨어 중심 차량 전환 준비

현대차·기아가 오픈소스 소프트웨어 특허 분쟁을 줄이기 위해 글로벌 특허 네트워크 OIN 2.0에 가입했다. 소프트웨어 중심 차량, 클라우드, 커넥티드 서비스처럼 오픈소스 의존도가 큰 영역에서 법적 리스크를 미리 관리하려는 움직임이다.