사용자 정의 필터 및 퀵픽스 필터에 발생한 변경 사항(MV3 정책의 영향)
사용자 정의 필터는 어디에 있나요? 퀵픽스 필터는 어떻게 됐나요?
매니페스트 V3에서 Chrome의 정책을 준수하기 위해 몇 가지 어려운 결정을 내려야 했습니다. 사용자 정의 필터는 일시적으로 사용할 수 없으며 퀵픽스 필터는 영구적으로 제거되었습니다.
그 이유는 무엇일까요? Chrome의 정책에 따라 스크립트 또는 원격으로 호스팅된 코드 삽입이 금지되어 있기 때문입니다. 이 정책의 의도는 좋지만 문구가 너무 광범위하여 광고 차단 규칙도 이러한 제한에 해당될 수 있으며, 안타깝게도 사용자 정의 필터와 퀵픽스 도구 필터 둘다 해당됩니다.
이것이 왜 문제가 되나요?
퀵픽스 필터는 MV3의 한계로 인해 구현되었습니다.
MV3 확장 프로그램에서는 모든 AdGuard 필터가 확장 프로그램 자체에 사전 구축되어 있으므로 필터 업데이트는 스토어에서 검토를 거친 전체 확장 프로그램 업데이트를 통해서만 제공될 수 있습니다. 그리고 이러한 업데이트는 사용자에게 도달하는 데 며칠이 걸릴 수 있습니다. 인기 있는 웹사이트가 중단되면 사용자들은 해결책을 기다리는 데 시간을 허비하게 되고, 이는 사용자들에게 뿐만 아니라 저희에게도 큰 불편을 줍니다.
MV2에서는 차등 업데이트를 통해 문제해결했기 때문에 전체 확장 프로그램을 업데이트하지 않고도 새 필터를 빠르게 출시할 수 있었습니다. 하지만 MV3에서는 그렇게 할 수 없었고, 퀵픽스 필터를 통해 실시간 업데이트를 제공했습니다.
이 필터를 규정준수하기 위해 최선을 다했지만(이 필터를 둘러싼 우여곡절의 역사는 아래에서 확인할 수 있습니다), 결국 Chrome의 정책으로 인해 이 필터를 완전히 제거할 수밖에 없었습니다.
사용자 정의 필터도 동일한 원격 실행 정책으로 인해 희생되어야 했습니다.
사용자 정의 필터를 사용하면 URL을 통해 타사 필터를 추가할 수 있습니다. 수천 명의 자원봉사자가 이러한 필터를 유지 관리하고 있으며, 이는 광고 차단 생태계의 성장에 필수적인 요소입니다. 사전 구축된 필터에 모든 것을 포함할 수는 없으며, 사용자 정의 필터는 필터링을 맞춤화하고 이러한 필터를 쉽게 테스트 및 배포할 수 있는 공간이었습니다.
사용자 정의 필터가 없어진다는 것은 사용자에게 실망스러운 일이 아니며, 저희는 사용자들에게 효과적인 확장 기능을 제공하기 위해 최선을 다하고 있습니다. 하지만 이전에 여러 MV3 관련 게시물에서 언급했듯이 “이번 전환의 진정한 피해자는 필터 개발자들”입니다. 사용자 정의 필터를 잃는다는 것은 광고 차단 세계를 유지하는 커뮤니티에 큰 타격입니다.
이 문제를 어떻게 해결하고 있나요?
확장 프로그램의 기능과 유용성을 유지하면서 Chrome의 정책을 준수하기 위해 AdGuard가 필터링 규칙을 처리하는 방식을 개편하고 있습니다.
변경 내용은 다음과 같습니다:
-
사용자 정의 필터를 다시 가져오기 위해
사용자 스크립트
API를 사용합니다. 이 API를 사용하면 MV3 정책을 준수하는 방식으로 스크립트를 등록할 수 있습니다.하지만 사용자가 이를 사용하려면 개발자 모드를 활성화해야 하므로 한 단계가 더 추가된다는 단점이 있습니다. 기술에 익숙하지 않은 사용자에게는 이것이 장벽이 될 수 있으므로 사용자 정의 필터가 포함된 버전을 출시하면 이를 활성화하고 필터를 추가하는 방법에 대한 명확한 지침을 제공하도록 하겠습니다.
-
퀵픽스 필터는 더 이상 원래의 형태로 존재할 수 없으므로 Chrome의 빠른 검토 프로세스로 전환합니다. 이렇게 하면 전체 확장 프로그램 검토를 기다리지 않고도 필터를 더 자주 업데이트할 수 있습니다. 하지만 이 방법에는 몇 가지 제한 사항이 있으며, DNR 규칙 세트 및 안전 규칙의 변경에만 적용됩니다.
몇 시간마다 자동으로 업데이트되도록 설정된 패스트트랙 업데이트와 Chrome 웹스토어에서 리뷰를 통해 전체 업데이트 등 두 가지 유형의 확장 프로그램 업데이트가 곧 제공될 예정입니다.
이상적이지 않은 이 솔루션에 도달하기까지 긴 여정이었습니다. 아래는 광고를 효과적으로 차단하고 사용자가 원하는 방식으로 필터링을 맞춤 설정할 수 있도록 하면서도 Chrome의 정책을 준수하는 확장 프로그램을 만들기 위해 노력한 모든 과정을 타임라인으로 정리한 것입니다.
Chrome 확장프로그램의 정책준수 시도
- 1차 거부: 원격 스크립트 실행
<script> 태그를 사용하여 규칙을 적용했다는 이유로 제출이 거부되었습니다. 실제로 확장 프로그램이 규칙에서 스크립트를 추출하여 <script> 태그를 통해 페이지에 적용하는 메커니즘을 사용했습니다. MV3 확장 프로그램의 경우 콘텐츠 보안 정책 요구 사항이 MV2보다 엄격하고 스크립트 규칙을 삽입할 수 없기 때문에 개발자가 페이지 콘텐츠를 수정하는 데 사용할 수 있는 도구가 심각하게 제한됩니다. 그래서 경우에 따라 <script> 태그 삽입 기능을 강화해야 했고, 이것이 문제가 되었습니다.
저희 솔루션:
Firefox에서 사용했던 솔루션을 채택하여 스크립트 규칙을 확장 프로그램 내에 저장된 로컬 JavaScript 함수로 변환했습니다. 이를 통해 <script> 태그 없이도 기본적으로 규칙을 적용할 수 있었습니다. 또한 스크립트를 적용하기 전에 스크립트가 기본 제공 규칙의 일부인지 확인하는 검사도 추가했습니다.
그러나 사용자 규칙, 사용자 정의 필터 및 퀵픽스 필터에는 여전히 <script>를 사용하여 규칙을 삽입하는 예외가 남아있었습니다.
이러한 변경 사항이 포함된 버전이 승인되었지만 이후 거부되었습니다.
- 2차 거부: 퀵픽스 필터 다운로드
이번에 Chrome은 원격 소스에서 퀵픽스 필터를 다운로드하는 메커니즘을 원격 실행 정책 위반으로 해석하여 플래그를 지정했습니다.
저희 솔루션:
퀵픽스 필터의 목적을 설명하는 자세한 코멘트를 추가하여 정책을 위반하지 않고 MV3의 제한을 해결하도록 설계된 방법을 명확히 설명했습니다.
이것만으로는 Chrome 리뷰어들을 만족시키기에 충분하지 않았습니다.
- 3번째 및 4번째 거부: 퀵픽스 필터
Chrome의 요구 사항을 충족하기 위해 퀵픽스 필터를 완전히 제거하고 확장 프로그램을 다시 제출했습니다. 다시 거부 통보를 받은 후 지원팀에 연락하여 퀵픽스 필터 코드와 메타데이터 다운로드를 완전히 비활성화한 버전을 제출했습니다. 이 버전은 처음에 승인되었지만 이후 거부되었습니다.
- 5번째 거부: 스크립틀릿 및 매개변수
Chrome은 스크립트릿(내장 자바스크립트 함수)이 매개변수를 사용하여 실행될 수 있기 때문에 원격 실행 정책을 위반하는 것으로 플래그를 지정했습니다.
저희 솔루션:
저희는 모든 스크립틀릿을 확장 프로그램에 직접 하드코딩했으며, 확장 프로그램 엔진은 이제 규칙이 사전 구축된 필터 카테고리(예: 광고 차단 또는 보안)와 일치하는지 여부를 검증합니다. 일치하는 규칙이 있으면 해당 규칙이 적용되고, 일치하지 않으면 규칙이 삭제됩니다.
또한 퀵픽스 필터를 제한된 형태로 다시 도입했지만 <script> 기반 실행은 제외했습니다.
이러한 변경에도 불구하고 확장 프로그램은 여전히 거부되었습니다.
결론
물론 저희는 이 문제를 해결할 방법을 찾을 것입니다. 하지만 이는 AdGuard에만 국한된 문제가 아닙니다. Chrome의 정책은 모든 광고 차단기와 확장 프로그램에 영향을 미칩니다.
개발자들에게는 Chrome 웹스토어의 더 명확한 가이드라인과 투명성이 필요합니다. 이번 사태를 계기로 보안과 기능의 균형에 대한 논의가 촉발되어 개발자와 사용자 모두에게 도움이 되기를 바랍니다.