확장 프로그램 MV3 v0.4.0: 큰 업데이트
MV3 기반 확장 프로그램을 출시한 지 거의 1년 반이 지났고, 이제 대대적인 업데이트가 필요한 시점입니다. 이제 확장 프로그램은 업데이트된 필터 엔진인 TSWebExtension과 TSUrlFilter에 의존합니다. Manifest V3에서 작동하는 첫 번째 확장 프로그램을 어떻게 만들었는지 살펴보려면 블로그를 참조하세요.
현재 확장 프로그램이 더 나은 5가지 이유
이유 #1: 새로운 규칙 우선 순위 체계
이전에는 규칙의 우선순위가 4가지로 나뉘었지만, 그룹 내에서 규칙을 선택하고 우선순위를 정하는 것이 명확하지 않았습니다. 새로운 체계에서는 규칙에 포함된 수식어를 기준으로 규칙의 가중치를 계산합니다. 이러한 수정자는 가장 낮은 것부터 가장 높은 것까지 우선순위에 따라 순위가 매겨지며, 규칙의 범위에 미치는 영향에 따라 전체 우선순위 가중치가 결정됩니다. 이 새로운 접근 방식을 사용하면 변환 단계에서 규칙에 대한 선언적 우선순위를 설정할 수 있으며, 이는 새로운 MV3에 특히 유용합니다. 새로운 우선순위 체계에 대한 자세한 내용은 지식 창고에서 확인할 수 있습니다.
이유 #2: $badfilter
지원
$badfilter
수정자는 다른 모든 규칙을 비활성화할 수 있습니다. 필터 개발자가 이 수정자가 포함된 규칙을 추가하고 확장 프로그램이 동적 업데이트를 받으면 $badfilter
수정자가 포함된 규칙이 해당 규칙에 적용된 규칙을 재정의합니다.
과거에는 MV3에서 이전에 추가한 규칙을 비활성화할 수 없었습니다. 그래서 처음에는 이미 같은 파일에 있는 규칙에 대해서만 $badfilter
지원을 추가했습니다. 한 파일에 규칙이 있는데 다른 파일에 $badfilter
를 추가하면 작동하지 않았습니다.
하지만 확장 프로그램 개발자들의 피드백에 힘입어 W3C 워킹 그룹은 다른 선언적 규칙을 비활성화할 수 있는 새로운 API를 도입했습니다. 이를 통해 모든 파일의 모든 규칙에 대해 $badfilter
지원을 추가할 수 있는 길이 열렸습니다. 이를 위해 규칙 변환 체계를 개선하여 필터에 대한 추가 메타데이터를 생성하고 비활성화해야 하는 규칙을 동적으로 찾을 수 있도록 했습니다.
이유 #3: $cookie
수정자 지원
$cookie
수정자를 사용하면 쿠키의 유효 기간(TTL)을 지정할 수 있습니다. 현재 MV3 기능으로는 이 수정자가 제대로 작동하기에 충분하지 않으므로 몇 가지 개선이 이루어졌습니다:
- MV3 API로 필터링 규칙이 작동하기에 충분한 경우, 규칙을 선언적 규칙으로 변환하여 정적 규칙 집합에 추가합니다.
- 그 외에는 TSUrlFilter 엔진에서 쿠키를 추가로 처리하고 browser.cookies API를 사용하여 설정해서는 안 되는 쿠키를 제거하거나 쿠키의 수명을 줄입니다.
이유 #4: $elemhide
, $generichide
, $specifichide
수정자 지원
이러한 수정자는 특정 웹사이트에 대한 외형적 필터링을 해제하는 데 도움이 됩니다. MV3에는 아직 이러한 도구가 없기 때문에 TSUrlFilter 필터링 엔진을 통해 수정자에 대한 지원을 추가했습니다. 이 엔진은 차단 규칙과 예외 규칙을 일치시키고 제외되지 않은 규칙만 콘텐츠 스크립트로 전송합니다.
이유 #5: 기타 업데이트된 내용
다음 수정자에 대한 지원이 추가되었습니다:
$method
는 지정된 HTTP 메서드 집합을 사용하는 요청으로 규칙 범위를 제한합니다.$to
는 규칙 범위를 지정된 도메인과 해당 하위 도메인으로 이루어진 요청으로 제한합니다.$removeheader
수정자가 포함된 규칙은 HTTP 요청 및 응답에서 헤더를 제거하기 위한 것입니다.Sall
수정자는 모든 콘텐츠 유형 수정자와$popup
으로 구성됩니다.$csp
수정자는 규칙 동작을 완전히 변경합니다. 규칙에 적용하면 규칙이 일치하는 요청을 차단하지 않습니다. 대신 응답 헤더가 수정됩니다.
이 확장 프로그램은 Manifest V3의 가혹한 조건에서 실행되는 최초의 광고 차단기이며, GitHub에서 확장 프로그램의 문제를 보고하면 많은 도움이 될 것입니다.