광고차단 4분 소요

uBlock Origin이 페이스북 광고 차단을 포기했습니다 — 20년 군비경쟁의 끝일까요

광고 차단기 얘기가 나오면 기준점은 늘 uBlock Origin이었습니다. 가볍고 공짜인데 무엇보다 잘 막았으니까요. 그 uBlock Origin이 페이스북 앞에서는 손을 들었습니다. 정확히는 “완벽한 차단은 더 이상 약속하지 못한다"는 쪽에 가깝습니다. 20년 넘게 이어진 광고 차단 군비경쟁에서 방어 측이 물러선 건 처음이니, 개발자들이 술렁일 만합니다.

한 가지는 미리 밝혀둡니다. 이 주제로 최근 30일 커뮤니티 데이터를 훑어봤는데 유의미한 신규 스레드가 잡히지 않았습니다. 그래서 아래 내용은 실시간 반응 중계가 아니라, 기술적으로 무슨 일이 벌어지고 있고 그게 무슨 뜻인지를 정리한 쪽입니다.

페이스북은 어떻게 광고 차단기를 이겼나

광고 차단의 원리는 생각보다 단순합니다. 브라우저가 페이지를 그릴 때 “이 요청은 광고 서버로 가는 거네” 하고 끊거나, “이 요소는 광고 박스네” 하고 숨깁니다. 앞이 네트워크 필터, 뒤가 코스메틱 필터입니다. 둘 다 알아볼 수 있는 표식이 있어야 작동합니다. 광고 도메인 이름이든 ad-container 같은 클래스명이든요.

페이스북이 한 일은 그 표식을 지운 겁니다. 광고를 별도 서버가 아니라 본문 콘텐츠와 같은 경로로 내려보냅니다. 친구 게시물과 광고가 한 요청에 섞여 오니 네트워크 단에서 광고만 골라 끊을 수가 없습니다. 끊으면 피드가 통째로 사라집니다.

코스메틱 쪽은 더 지독합니다. 클래스명과 DOM 구조를 난독화하고 그것도 수시로 바꿉니다. 어제 통하던 CSS 선택자가 오늘 아침엔 아무 데도 안 걸립니다. 사용자마다 다른 구조를 내려주기도 합니다. 필터 목록 관리자가 하루 만에 규칙을 갱신해도 페이스북은 자동 배포로 몇 시간 만에 그걸 무력화합니다. 사람 대 파이프라인의 싸움이니 결과는 뻔합니다.

버틸 수 없는 비용 구조

이건 기술력 차이가 아닙니다. 비용 구조의 문제입니다.

페이스북 쪽에서 난독화 로직을 바꾸는 건 CI 파이프라인에 커밋 하나 얹는 일입니다. 그다음은 자동으로 굴러갑니다. 반대편에서는 자원봉사자가 변경을 발견하고 원인을 뜯어보고 규칙을 짠 다음, 다른 사용자 환경에서 안 깨지는지 확인하고 배포까지 해야 합니다. 한쪽은 기계가 하고 한쪽은 사람이 합니다.

게다가 방어자는 모든 변형을 막아야 하지만 공격자는 하나만 뚫으면 됩니다. 보안 쪽에서 익숙한 그 비대칭이 여기서도 그대로입니다. 광고 하나가 화면에 뜨는 순간 그 라운드는 페이스북 승리입니다.

규모까지 얹힙니다. 페이스북은 광고 전달 방식을 바꾸는 데 엔지니어링 예산을 사실상 무제한으로 씁니다. uBlock Origin은 기부와 자원봉사로 굴러갑니다. 몇 년이나 버틴 게 오히려 신기한 일입니다.

Manifest V3라는 두 번째 타격

타이밍이 최악입니다. 페이스북 문제가 깊어지는 동안 크롬은 Manifest V3 전환을 밀어붙였습니다. 확장 프로그램 규격을 새로 짠 건데, 광고 차단에는 치명적인 변화가 둘 있습니다.

첫째, 예전에는 확장 프로그램이 네트워크 요청을 실시간으로 들여다보고 판단할 수 있었습니다(webRequest 방식). V3에서는 규칙을 미리 등록해두면 브라우저가 알아서 처리합니다. 확장은 요청 내용을 못 봅니다. 그때그때 판단해야 하는 상황에서 눈을 가린 셈입니다.

둘째, 등록할 수 있는 규칙 개수에 상한이 있습니다. 필터 목록은 계속 커지는데 담을 그릇은 정해져 있습니다.

그래서 크롬 웹스토어에는 지금 uBlock Origin이 아니라 uBlock Origin Lite가 올라가 있습니다. 이름에 붙은 Lite가 정직합니다. 기능이 줄어든 버전이니까요. 파이어폭스는 아직 원래 V2 방식을 지원합니다. 다만 브라우저 점유율을 생각하면 사용자 대부분에게는 위안이 못 됩니다.

구글이 왜 이랬느냐는 논쟁은 끝이 없습니다. 공식 설명은 보안과 성능입니다. 반박은 간단합니다. 매출 대부분을 광고로 버는 회사가 광고 차단기의 손발을 묶는 규격을 만들었습니다. 그 자체로 이해충돌입니다.

그래서 광고 차단은 끝났나

아직 아닙니다. 다만 모양이 바뀌고 있습니다.

브라우저 확장이라는 방식이 흔들리면서 무게 중심이 다른 데로 옮겨가는 중입니다. Pi-hole처럼 네트워크 단에서 DNS로 거르는 방식, NextDNS 같은 서비스형 DNS 필터, 차단을 브라우저에 아예 내장한 Brave, 확장 자유도를 아직 지키는 파이어폭스 계열이 그렇습니다.

하지만 이쪽도 페이스북 문제는 못 풉니다. DNS 차단은 도메인 단위로 작동하는데 광고가 본문과 같은 도메인에서 오면 손쓸 방법이 없습니다. facebook.com을 통째로 막으면 되긴 합니다. 그건 차단이 아니라 그냥 안 쓰는 거지만요.

남는 그림은 이렇습니다. 광고 차단은 기술적으로 막을 수 있는 영역에서만 계속 유효합니다. 뉴스 사이트, 블로그, 커뮤니티처럼 서드파티 광고 네트워크를 쓰는 곳에서는 여전히 잘 듣습니다. 반대로 광고와 콘텐츠를 한 덩어리로 묶을 수 있는 대형 플랫폼에서는 점점 무력해집니다. 페이스북, 인스타그램, 유튜브, 틱톡 다 같은 방향으로 갑니다.

진짜 문제는 웹이 닫히고 있다는 겁니다

이걸 광고 몇 개 더 보게 됐다는 얘기로 읽으면 핵심을 놓칩니다.

웹은 지금까지 사용자가 자기 브라우저를 통제한다는 전제 위에 서 있었습니다. 서버가 HTML을 보내면 그걸 어떻게 그릴지는 사용자 쪽 결정이었습니다. 글꼴을 키우든 다크 모드를 씌우든 특정 요소를 숨기든 자유였고요. 광고 차단도 그 원칙을 써먹은 하나였을 뿐입니다.

페이스북 방식은 이 전제를 무너뜨립니다. 콘텐츠와 광고를 애초에 갈라낼 수 없게 만들어 통제권을 무의미하게 만듭니다. 여기에 확장 권한을 좁히는 Manifest V3가 겹치면 웹은 조금씩 앱을 닮아갑니다. 주는 대로 보는 화면 말입니다.

기술적으로 아예 막을 방법이 없진 않습니다. 다만 대부분 유지 비용을 감당 못 하거나, 클라이언트에서 무거운 분석을 돌려야 합니다. 자원봉사로 굴러가는 프로젝트가 감당할 선은 이미 넘었습니다.

마무리

uBlock Origin의 후퇴는 프로젝트 하나가 삐끗한 문제가 아닙니다. 사용자가 웹 화면을 자기 마음대로 손보던 시절이 적어도 몇몇 영역에서는 끝나간다는 신호에 가깝습니다. 웹은 잘 막히는 곳과 못 막는 곳으로 갈라지고 있는데, 하필 못 막는 쪽이 사람들이 시간을 가장 많이 쓰는 곳입니다.

광고를 막을 수 없다면 남는 선택지는 돈을 내거나 떠나는 것뿐입니다. 둘 다 썩 내키지 않습니다. 그런데 더 걸리는 건 따로 있습니다. 광고와 콘텐츠를 갈라낼 수 없게 만든 플랫폼 구조를, 우리가 너무 순순히 받아들여온 건 아닌가 하는 겁니다.

광고차단 uBlock Origin Manifest V3 브라우저 페이스북 웹생태계

댓글

    댓글을 불러오는 중...