Safari에서 YouTube 광고: 지금은 차단이 안 되는데 앞으로 차단은 될까요?

요즘에 Safari 브라우저에서 YouTube 광고가 차단되지 않는 것에 대한 많은 불만이 접수되었습니다. YouTube는 로그인된 사용자에게 광고를 표시하기 위해 새로운 알고리즘을 사용했으며 광고 차단 품질에 부정적인 영향을 미쳤습니다. 현재 YouTube는 일반 동영상과 거의 동일한 방식으로 동영상 광고를 로드합니다.

Safari에서 YouTube 광고를 차단하는 방법을 찾았지만 다른 브라우저보다 차단 방법이 조금 부족합니다. 간단히 말해서 저희는 광고일 확률이 높은 짧은 동영상만을 차단하고 있습니다.

개요

몇달 전 YouTube는 Chrome 사용자에게 동영상 광고를 표시하는 것을 시작했지만 저희는 이 문제를 처리할 수 있었습니다. 그러나 Safari 콘텐츠 차단 기능은 다른 브라우저의 콘텐츠 차단기에 비해 많이 제한됩니다. Safari 콘텐츠 차단 API는 2015년에 도입된 이후 변경 사항이 많지 않았습니다.

운영 체제에 따라 다음과 같이 예상할 수 있습니다.

  • iOS/iPadOS:
    현재 솔루션은 이 상황에서 최상의 해결책입니다. Apple이 큰 변화를 일으키지 않는 이상 저희는 할 수 있는 것이 없습니다.

  • macOS:

    • Mac용 AdGuard를 사용하는 경우, 변경 사항이 적용되지 않습니다. 이 광고가 처음부터 표시되지 않았을 겁니다.

    • Safari용 AdGuard를 사용하는 경우, ‘고급 차단’ 확장 프로그램이 활성화되어 있는지 확인하세요. 이 확장 프로그램에는 Safari 콘텐츠 차단에 없는 기능이 포함되어 있습니다. 안타깝게도 iOS/iPad OS에 이 확장 프로그램을 사용할 수 없습니다.

Safari가 콘텐츠 차단 측면에서 관련성을 유지하려면 몇 가지 사항을 개선해야 한다고 생각합니다. 저희는 필요한 모든 전문 지식을 제공할 준비가 되어 있습니다. 지난 몇 년 동안 저희는 버그 신고와 기능 요청을 제출해왔었습니다.

Safari 콘텐츠 차단에 대해 무엇이 잘못되었는지 알고 싶으시다면 계속 읽어 보십시오. 기술 지식이 필요할 수도 있으니 그냥 마지막 부분을 읽어 주시면 됩니다.

Safari 광고 차단 작동 방법

Safari의 기능 제한과 AdGuard에서 이 제한을 우회하는 방법에 대해 이야기하기 전에 먼저 Safari 콘텐츠 차단이 어떻게 작동되는지 살펴볼까요?

콘텐츠 차단기는 별도의 프로세스로 실행되는 앱의 확장 프로그램입니다. 이 확장 프로그램의 목적은 콘텐츠 차단 규칙 목록과 함께JSON 파일을 제공하는 것입니다. 이 규칙은 Safari에서 차단 기능을 작동하는 데 사용됩니다.

Safari에서 콘텐츠 차단기가 작동하는 방식

각 콘텐츠 차단 규칙은 두 부분 '트리거'와 '액션'으로 구성된 'JSON' 개체입니다.

‘트리거’는 규칙을 적용해야 하는 요청을 정의하고 '액션’은 매칭 요청에 대해 수행할 작업을 정의합니다.

Safari의 차단 규칙

CSS 선택기와 일치하는 페이지 요소를 숨기는 보정 규칙도 있습니다.

Safari의 보정 규칙

요청 차단 또는 요소 숨기기의 두 가지 유형의 작업들만 검토했지만 몇 가지 더 있습니다:

  • 다른 매칭 규칙 비활성화
  • 쿠키 차단
  • HTTPS로 연결 업그레이드

Safari 콘텐츠 차단이 무엇인지 어떻게 작동하는지 봤는데 이제 기능의 제한에 대해 살펴보겠습니다.

기능의 제한

광고 차단 커뮤니티를 가장 괴롭히는 기능 제한은 다음과 같습니다. (그들 중 일부는 어느 정도 완화될 수 있지만 완벽한 해결책이 아닙니다).

  • 디버깅 도구 없음
  • 다른 신텍스 (부분적으로 해결될 수 있음)
  • 느린 컴파일
  • 콘텐츠 차단기 당 5만 개의 규칙 사용 가능 (불편하지만 문제해결)
  • 제한된 정규 표현식 지원
  • Safari 팀에 콘텐츠 차단은 우선 순위가 낮음

이 문제를 자세히 살펴 보겠습니다.

디버깅 도구 없음

디버깅 도구 없는 것은 간단한 문제인데 해결 방법이 아직 없습니다. 개발자가 효과적인 필터링 규칙을 만들려면 규칙을 디버깅해야 합니다. 규칙을 디버깅하기 위해 디버깅 도구가 필요하지만 현재로서는 Safari 콘텐츠 차단 기능에 디버깅 도구가 없습니다. 필터 관리자가 사용할 수 있는 유일한 도구는 차단된 요청을 확인할 수 있는 브라우저 콘솔입니다. 어떤 규칙이 어떤 요청을 차단하는지 확인할 수 없어서 이 규칙을 수동으로 찾은 것은 매우 지루할 수 있습니다. 보정 규칙을 디버깅하는 적절한 방법도 없습니다.

Safari의 브라우저 콘솔

그래서 Safari용 필터를 개발하는 것은 매우 비효율적인 과정입니다. 많은 필터 관리자들은 필터링 규칙을 만들 때 Safari보다 다른 브라우저를 선택합니다. 따라서 다른 브라우저에 비해 Safari 필터 목록의 품질은 조금 떨어집니다.

다른 신텍스

AdGuard 필터, EasyList 및 uBlock 필터는 모두 원래 Adblock Plus 핵심 신텍스를 기반으로 합니다. Adblock Plus의 신텍스는 업데이트되었지만 핵심 부분은 다른 인기 콘텐츠 차단기에서 사용됩니다.

공통 필터링 규칙 구조

위 그림에서 보았 듯이 Safari 차단 규칙은 이 신텍스와 공통점이 없습니다. 그리고 Safari는 충분한 도구를 제공하지 않기 때문에 오직 Safari를 위한 특별 필터 목록을 만드는 것은 조금 어렵습니다.

AdGuard 필터 및 EasyList와 같은 기존 필터 목록을 사용할 수 있으면 좋겠습니다.

해결 방법

확실한 해결책은 규칙을 Safari 콘텐츠 차단 규칙으로 자동 변환하는 것입니다. AdGuard는 기기에서 실시간으로 규칙을 변환합니다.

Safari 신텍스 문제에 대한 해결방법

이 부분은 광고 차단기의 효율을 떨어뜨리는 주요 요소입니다.

느린 컴파일

Safari는 콘텐츠 차단기의 JSON을 "접두사 트리"로 컴파일하여 조회 속도를 높입니다.

그러나 이 접두사 트리를 컴파일하는 것은 느립니다. 예를 들어, 새로운 MacBook Pro에서 3만 규칙의 JSON을 컴파일하는 데 2초 이상 걸립니다.

Safari에서의 컴파일 시간

다른 플랫폼의 콘텐츠 차단기와 비교하면 2초는 너무 느립니다. Android용 AdGuard 앱이 10만 규칙 이상의 목록을 파싱하고 컴파일하는 데 1초도 걸리지 않습니다. 차이점은 Android 앱은 정규 표현식만큼 복잡하지 않고 유연하지 않은 다른 신텍스를 사용하지만 URL 매칭에 특별히 최적화되어 있다는 것입니다.

이 부분은 사용자들에게 잘 보이지 않고 직접적인 영향을 주지 않지 않습니다. 하지만 이측면은 다양한 제한을 유발하기 때문에 사실 중요한 부분입니다.

5만 개의 규칙 제한

단일 콘텐츠 차단기가 5만 개 이상의 규칙을 포함 할 수 없다는 것은 Safari의 제한 사항입니다. Apple 개발자는 컴파일 속도가 느리기 때문에 이 기능 제한이 존재한다는 것을 확인했습니다. 새 기기가 더 빠르기 때문에 제한을 늘릴 수 있지만 모든 문제가 해결되지는 않을 것입니다.

규칙이 정규 표현식 사용을 기반으로 하는 이상 상당한 개선의 여지가 없습니다. 그리고 높은 숫자에 속지마세요. 예를 들어, AdGuard Base 필터와 EasyList (2 개의 필터만)에는 총 10만 개의 규칙이 있습니다. 다른 플랫폼의 사용자가 동시에 5~10 개의 필터를 사용하는 것은 일반적 일입니다.

해결 방법

사실은 몇가지 해결 방법이 있는데 모두 함께 사용해도 원하는 결과를 제공하지 못합니다. 하지만 없는 것보다는 확실히 낫습니다.

필터 최적화

필터 개발자로서 Safari 전용 필터를 최적화하려고 합니다. 저희가 하는 일 중 하나는 유사한 숨김 규칙들을 하나로 결합하는 것입니다. 아래 사진처럼 5개의 규칙이 단 2개로 결합됩니다:

Safari의 필터 최적화

이 방법은 도움이 되지만 충분하지 않습니다.

사용되지 않는 규칙 제거

그리고 최적화된 버전의 필터에서 오래되고 거의 사용되지 않는 규칙을 제거합니다. AdGuard 확장 프로그램 사용자들이 익명으로 필터 사용 통계자료(기본적으로 비활성화되어 있음)를 공유하는 덕분에 많이 사용되지 않는 규칙을 알고 있습니다. 저희는 사용되지 않는 규칙 없이 AdGuard 베이스 필터와 같은 인기 목록의 특수버전을 구축합니다.

필터 개발자는 최적화 과정에도 불구하고 어떤 규칙을 유지해야 하는지 제어하기 위해 특별한 힌트를 사용할 수 있음

필터 크기가 작아 지지만 결국 광고 차단 품질이 떨어집니다. 또한 이 방법에는 단점이 있습니다. 예를 들면, 확장 프로그램에서 사용되지 않는 규칙에 대한 통계는 없습니다. 그리고 일부 필터 개발자들은 규칙 옆에 이러한 힌트를 넣지 않습니다.

멀티 콘텐츠 차단기

대부분 Safari 광고 차단기 개발자가 사용하는 또 하나의 방법은 광고 차단기를 여러 개의 콘텐츠 차단기로 나누는 것입니다.

iOS용 AdGuard는 6개의 콘텐츠 차단기로 구성됨

각 콘텐츠 차단기에는 5만 개 미만의 규칙들이 있지만 전체적으로 더 많은 규칙을 사용합니다. 그러나 광고 차단에 50.000 x 6 = 300.000 공식이 맞지 않는 데에는 여러 가지 이유가 있습니다.

  • 한 필터가 다른 필터의 규칙을 처리하는 것은 일반적입니다. 그러나 이 방법을 사용하면 다양한 Safari 콘텐츠 차단기들은 독립적이며 그 규칙들은 서로 영향을 받지 않습니다.

  • 필터에 5만 개 이상의 규칙이 있는 경우, 해당 필터를 추가할 수 없습니다.

Safari 제한 사항에 맞게 AdGuard 프로그램을 계속 분할할 것이지만 이 과정이 얼마나 재미없는지 알려 드리고 싶었습니다.

낮은 개발 우선 순위

이 부분은 암시적이기 때문에 마지막으로 살펴 보겠습니다. 다음은 6년 동안 Safari 콘텐츠 차단 API에 대한 변경 로그입니다.

2015년 — Safari 콘텐츠 차단이 구현되었습니다.
2016년 — 하나의 새로운 기능(make-https)이 추가되고 몇 가지 버그들이 수정되었습니다.
2017년 — 거의 사용할 수 없는 새로운 기능(if-top-url)이 추가되고 몇 가지 버그들이 수정되었습니다. 또한 WKWebView에 콘텐츠 차단기들이 추가되었습니다.
2018년 — 몇 가지 버그들이 수정되고 코드 리팩토링이 되었습니다.
2019년 — 몇 가지 버그들이 수정되었습니다.
2020년 — 큰 변화가 없었습니다.

느린 개발 속도로 인해 최신 광고 삽입 기술을 따라 잡기가 불가능합니다. 이 것에 대한 변화가 필요합니다. Safari 개발자들의 우선 순위가 이러한 문제를 해결하는 방향으로 전환되기를 바라며 필요한 도움을 제공할 준비가되어 있습니다.

어떻게 해야 할까요?

광고 차단 커뮤니티는 수년 동안 경보를 울리고 있었습니다. 추가하도록 제안된 기능의 몇 가지 예시는 다음과 같습니다.

이 기능은 YouTube 광고문제를 해결할 수 있습니다.

위에 언급한 기능이 제일 필요할 뿐 저희들이 제출한 기능들은 더 많습니다. 이 커뮤니티의 일원이기 때문에 저희는 이 문제에 대한 Apple의 관심을 끌기에 충분한 노력을 기울 였다고 생각합니다. 어떤 도움이 필요하면 기꺼이 도와 드리겠습니다.

이제는 변화가 꼭 필요합니다. 그렇지 않으면 광고 제공 업체를 제외한 모든 사람들이 지게 됩니다.

2021년에는 상황이 변하고 있는 것으로 보입니다. 예를 들면. 이제 5만 규칙에서 향상된 15만 규칙으로 사용할 수 있습니다.

Nata Kiseleva iOS용 AdGuard Safari용 AdGuard
2021년 5월 24일
댓글은 Disqus에서 제공됩니다. 댓글을 다운로드하면 Disqus의 약관 및 정책에 동의하게됩니다
Mac용 AdGuard VPN 첫 오픈 베타 출시
Mac용 AdGuard VPN의 첫 오픈 베타를 만나 보세요! 이 버전에서는 다시 시작한 후 설정 및 다크 테마가 재설정되지 않으며 이전 서버와의 연결을 끊지 않고 VPN 서버에 연결하면 IP가 변경됩니다. 또한 프로그램을 시작할 때 자동 연결, 예외 목록 가져오기/내보내기, 충돌 보고서 창,메뉴 표시 줄의 항목이 추가되었습니다.
Android용 AdGuard VPN v1.2: 예외 목록 가져오기/내보내기, 사용자 지정 DNS 서버
Android용 AdGuard VPN 1.2 버전이 출시되었습니다. Android용 AdGuard VPN 1.2 버전의 기능을 살펴볼까요?
AdGuard 다운로드가 시작되었습니다. 화살표가 향하는 방향을 눌러 설치를 시작해주세요. AdGuard를 선택해 주셔서 감사합니다! "열기"를 선택한 다음 "확인"을 누른 후, 다운로드가 완료될 때까지 기다리세요. 창이 열려있다면, AdGuard를 "애플리케이션" 폴더에 드래그해주세요. AdGuard를 선택해주셔서 감사합니다! "열기"를 선택 후 "확인"을 클릭한 다음, 다운로드가 완료될 때까지 기다리세요. 열렸으면, "설치"를 눌러주세요. AdGuard를 선택해 주셔서 감사합니다!