Manifest V3의 콘텐츠 필터링 개선

지난 한 해 동안 Google은 MV3 확장 프로그램 플랫폼을 개선하는 방법과 관련하여 여러 콘텐츠 차단 확장 프로그램을 만든 공급업체와 적극적으로 논의해 왔습니다. WebExtensions 커뮤니티 그룹 (WECG)에서 다른 브라우저와의 공동작업을 통해 진행된 많은 논의를 바탕으로 Google은 상당한 개선사항을 제공할 수 있었습니다.

더 많은 정적 규칙 집합

필터 규칙 집합은 일반적으로 목록으로 그룹화됩니다. 예를 들어 좀 더 일반적인 목록에는 모든 사용자에게 적용할 수 있는 규칙이 포함될 수 있고, 좀 더 구체적인 목록에는 일부 사용자만 차단하고 싶어하는 위치 관련 콘텐츠가 숨겨질 수 있습니다. 최근까지는 각 확장 프로그램이 사용자에게 50개의 목록 (또는 '정적 규칙 세트')을 선택할 수 있도록 허용했으며 이 중 10개에 대해 동시에 사용 설정할 수 있었습니다. 커뮤니티와의 토론에서 확장 프로그램 개발자들은 특정 사용 사례에서 이 수치가 너무 낮다는 납득할 만한 증거를 제공했습니다. 이러한 논의를 염두에 두고 Chrome의 API 성능을 검토한 결과, 이제 최대 50개까지 동시에 사용 설정할 수 있도록 허용하게 되었습니다. 특히 이는 WECG에서 요청된 한도(20개)보다 훨씬 높습니다. 또한 총 100개의 규칙 세트가 허용됩니다. 이 기능은 Chrome 120에서 제공되며, 이 제안서의 초기 의견을 제공한 Firefox와 Safari 모두에서 한도 상향 조정을 지원합니다.

더 많은 동적 규칙

대부분의 규칙은 '정적'이며 확장 프로그램이 업데이트될 때마다 제공됩니다. 하지만 더 빈번한 업데이트와 사용자 정의 규칙을 지원하기 위해, 확장 프로그램은 개발자가 Chrome 웹 스토어에 새 버전의 확장 프로그램을 업로드할 필요 없이 동적으로 규칙을 추가할 수 있습니다.

확장 프로그램이 Chrome 웹 스토어 검토 중에 확인되지 않은 방식으로 요청을 동적으로 수정할 수 있는 경우, 이로 인해 사용자가 피싱 또는 데이터 도용의 위험에 노출됩니다. 예를 들어 리디렉션 규칙을 오용하여 동의 없이 제휴 링크를 삽입할 수 있습니다.

따라서 Google은 확장 프로그램에 최대 5, 000개의 규칙만 추가할 수 있도록 허용했으며,이 기능을 조금만 사용하도록 권장하여 악용 사례를 더 쉽게 감지할 수 있었습니다.

하지만 AdGuard 및 Adblock Plus를 비롯한 확장 프로그램의 개발자들은 한도를 높이면 더 많은 최신 규칙을 허용하고 맞춤 목록 수가 더 많은 사용자는 Manifest V3로 이전할 수 있는 자체 분석 및 공유 데이터를 수행했습니다. 실제로 AdGuard에 따르면 매주 인기 목록에 2,600개 이상의 변경사항이 적용되고 있으며, 맞춤 필터 목록을 사용하는 사용자 5% 중 4명 중 1명은 총 5,000개 이상의 동적 규칙을 사용하고 있다고 합니다 (출처). AdGuard는 확장 프로그램을 Manifest V3로 이전하는 데 있어 이를 중대한 과제라고 밝혔으며, 다른 콘텐츠 차단 프로그램들로부터도 유사한 의견을 받았습니다.

block 또는 allow 작업이 있는 필터 규칙과 같은 일부 필터 규칙이 훨씬 더 안전하며 악용될 가능성이 낮은 것으로 확인되었습니다. 또한 이러한 필터는 광고 차단 필터 규칙의 대부분을 구성합니다. 이를 토대로 웹 확장 프로그램 커뮤니티 그룹에 제안서 초안을 작성하고 제안을 공유하여 Google에서 위험성이 낮다고 판단하고 최대 30,000개까지 허용할 수 있는 규칙 집합을 정의했습니다. 성능 저하를 방지하기 위해 여전히 상한이 유지됩니다.

이 제안은 웹 확장 프로그램 커뮤니티 그룹에서 지원되어서 구현되었습니다. Chrome 121부터 30,000개의 더 높은 규칙이 안전한 DNR 규칙에 적용되며, 이는 block, allow, allowAllRequests 또는 upgradeScheme 작업이 포함된 규칙으로 정의됩니다.

AdGuard에서 공유한 데이터에 따르면 규칙의 98~99%가 이 더 높은 한도로 혜택을 받을 수 있습니다. 나머지 규칙은 계속 지원되며 기존 한도 내에서 추가할 수 있습니다.

이는 Chrome에서 MAX_NUMBER_OF_DYNAMIC_RULES 상수로 사용할 수 있습니다. 다른 모든 동적 순 요청 규칙의 규칙 한도는 5,000개로 유지됩니다.

규칙 집합 크기 축소

Chrome 118에서는 커뮤니티의 의견에 따라 isUrlFilterCaseSensitive 필드의 기본값을 false변경했습니다. 이 필드는 URL로 필터링하는 규칙이 대소문자를 구분하는지 여부를 제어합니다. 대부분의 개발자들은 확장 프로그램에 다른 기본값이 있음을 알게 되었습니다. 따라서 값을 여러 번 설정해야 했습니다. 이렇게 변경함으로써 개발자는 규칙 세트의 크기를 상당히 줄일 수 있습니다.

다음 단계

Google은 가능한 한 많은 사용 사례를 지원할 수 있도록 declarativeNetRequest API에 투자하고 있으며 커뮤니티와 계속 협력할 수 있기를 기대합니다. 특히 이 작업을 주도한 상당한 양의 데이터를 공유해 주신 AdGuard와 이 API 설계에 중요한 역할을 해주신 모든 브라우저 공급업체 등 WECG 회원 여러분께 감사의 말씀을 전합니다.

Google에서는 지속적으로 적용되는 한도를 검토하여 필요한 경우 조정을 적용할 예정입니다. 이를 지원하기 위해 가까운 시일 내에 이 작업의 일환으로 수집한 데이터 일부를 공유할 계획입니다. 또한 PDF 뷰어 확장 프로그램에서 흔히 볼 수 있는 요청인 응답 헤더를 매칭하는 등의 기능을 추가하는 작업을 진행하고 있습니다. 어떤 경우든 Google은 계속해서 자신의 노력을 알릴 것이며 웹 확장 프로그램 커뮤니티 그룹을 정기적으로 통해 아이디어를 논의하고 다음 아이디어에 대해 논의할 것입니다.