Cải thiện tính năng lọc nội dung trong Manifest V3

Trong năm qua, chúng tôi đã tích cực tham gia các cuộc thảo luận với nhà cung cấp đằng sau một số tiện ích chặn nội dung xoay quanh cách cải thiện nền tảng tiện ích MV3. Dựa trên những cuộc thảo luận này, nhiều cuộc thảo luận trong số đó diễn ra trong Nhóm cộng đồng Web Extensions (WECG) trong quá trình cộng tác với các trình duyệt khác, chúng tôi đã có được những cải tiến quan trọng.

Tập hợp quy tắc tĩnh khác

Bộ quy tắc lọc thường được nhóm thành các danh sách. Ví dụ: một danh sách chung chung hơn có thể chứa các quy tắc áp dụng cho tất cả người dùng trong khi một danh sách cụ thể hơn có thể ẩn nội dung có vị trí cụ thể mà chỉ một số người dùng muốn chặn. Cho đến gần đây, chúng tôi đã cho phép mỗi tiện ích cung cấp cho người dùng lựa chọn trong số 50 danh sách (hoặc "bộ quy tắc tĩnh") và bật đồng thời 10 danh sách trong số này. Trong các cuộc thảo luận với cộng đồng, các nhà phát triển tiện ích đã cung cấp bằng chứng thuyết phục cho thấy tỷ lệ này là quá thấp đối với một số trường hợp sử dụng nhất định. Sau khi xem xét hiệu suất của API trong Chrome trên cơ sở những nội dung thảo luận này, hiện chúng tôi cho phép bật tối đa 50 API cùng một lúc. (Đáng chú ý là mức này cao hơn đáng kể so với giới hạn 20 mã được yêu cầu trong WECG.) Chúng tôi cũng cho phép tạo tổng cộng 100 quy tắc. Tính năng này được vận chuyển trong Chrome 120 và việc tăng giới hạn được cả Firefox và Safari hỗ trợ. Cả hai đều đã cung cấp thông tin đầu vào sớm về đề xuất này.

Các quy tắc động khác

Hầu hết các quy tắc đều ở trạng thái "tĩnh" và đi kèm với mỗi bản cập nhật cho một tiện ích. Tuy nhiên, để hỗ trợ cập nhật thường xuyên hơn và các quy tắc do người dùng xác định, tiện ích cũng có thể thêm quy tắc một cách linh động mà nhà phát triển không phải tải phiên bản mới của tiện ích lên Cửa hàng Chrome trực tuyến.

Khi một tiện ích có thể linh động sửa đổi các yêu cầu theo những cách chưa được kiểm tra trong quá trình xem xét của Cửa hàng Chrome trực tuyến, thì điều này sẽ khiến người dùng có nguy cơ bị lừa đảo hoặc đánh cắp dữ liệu. Ví dụ: người dùng có thể sử dụng quy tắc chuyển hướng sai mục đích để chèn các đường dẫn tiếp thị liên kết khi chưa có sự đồng ý.

Do đó, chúng tôi chỉ cho phép tiện ích thêm tối đa 5.000 quy tắc khuyến khích sử dụng chức năng này một cách thận trọng và giúp chúng tôi phát hiện hành vi sai trái dễ dàng hơn.

Tuy nhiên, nhà phát triển của các tiện ích bao gồm AdGuard và Adblock Plus đã tự thực hiện việc phân tích và chia sẻ dữ liệu. Việc đặt giới hạn cao hơn sẽ cho phép các quy tắc mới nhất cũng như những người dùng có nhiều danh sách tuỳ chỉnh hơn có thể di chuyển sang Manifest V3. Trên thực tế, AdGuard báo cáo rằng có hơn 2.600 thay đổi được thực hiện đối với các danh sách phổ biến mỗi tuần, và trong số 5 phần trăm người dùng sử dụng danh sách bộ lọc tùy chỉnh, một phần tư người dùng trong số đó có tổng cộng hơn 5.000 quy tắc động trên họ (nguồn). AdGuard nhận thấy đây là một thách thức lớn đối với việc di chuyển tiện ích sang Manifest V3. Chúng tôi cũng nhận được ý kiến phản hồi tương tự từ các trình chặn nội dung khác.

Chúng tôi xác định được rằng một số quy tắc bộ lọc, chẳng hạn như những quy tắc có hành động block hoặc allow, an toàn hơn nhiều và ít có khả năng bị sử dụng sai mục đích. Chúng cũng tạo nên phần lớn các quy tắc bộ lọc chặn quảng cáo. Dựa trên điều này, tôi đã soạn thảo và chia sẻ một đề xuất trong Nhóm cộng đồng tiện ích web để xác định một bộ quy tắc mà chúng tôi cho là có rủi ro thấp hơn và cho phép tối đa 30.000 quy tắc trong số này. Chúng tôi vẫn giữ giới hạn trên để tránh tình trạng suy giảm hiệu suất.

Đề xuất này được Nhóm cộng đồng tiện ích web hỗ trợ nên chúng tôi đã triển khai đề xuất. Kể từ Chrome 121, giới hạn cao hơn là 30.000 quy tắc sẽ áp dụng cho các quy tắc DNR an toàn mà chúng tôi đang định nghĩa dưới dạng quy tắc bằng hành động của block, allow, allowAllRequests hoặc upgradeScheme.

Dựa trên dữ liệu do AdGuard chia sẻ, 98 đến 99% quy tắc của họ sẽ được hưởng lợi từ hạn mức cao hơn này. Các quy tắc còn lại vẫn được hỗ trợ và có thể được thêm vào trong hạn mức hiện tại.

Điều này có sẵn trong Chrome dưới dạng hằng số MAX_NUMBER_OF_DYNAMIC_RULES. Giới hạn quy tắc cho tất cả các quy tắc yêu cầu mạng động khác vẫn ở mức 5.000.

Giảm kích thước bộ quy tắc

Trong Chrome 118, chúng tôi đã thay đổi giá trị mặc định cho trường isUrlFilterCaseSensitive thành false dựa trên ý kiến phản hồi của cộng đồng. Trường này kiểm soát việc một quy tắc lọc theo URL có phân biệt chữ hoa chữ thường hay không và chúng tôi đã tìm hiểu được rằng hầu hết các nhà phát triển đều có một giá trị mặc định khác trong tiện ích của họ. Do đó, bạn phải đặt giá trị này nhiều lần. Bằng cách thực hiện thay đổi này, các nhà phát triển có thể giảm đáng kể kích thước của bộ quy tắc của họ.

Tiếp theo là gì?

Chúng tôi cam kết tiếp tục đầu tư vào API declarativeNetRequest để có thể hỗ trợ nhiều trường hợp sử dụng nhất có thể, đồng thời mong muốn tiếp tục hợp tác với cộng đồng. Cụ thể, chúng tôi muốn cảm ơn các thành viên của WECG đã tham gia, trong đó có AdGuard đã chia sẻ một lượng đáng kể dữ liệu giúp thúc đẩy công việc này và tất cả các nhà cung cấp trình duyệt đều có vai trò quan trọng trong quá trình thiết kế API này.

Chúng tôi sẽ tiếp tục xem xét các giới hạn hiện tại để điều chỉnh khi cần. Để hỗ trợ công tác này, chúng tôi dự định chia sẻ một số dữ liệu mà chúng tôi đã thu thập trong thời gian sắp tới. Ngoài ra, chúng tôi đang nỗ lực bổ sung các tính năng khác như khả năng khớp với tiêu đề phản hồi. Đây là một yêu cầu phổ biến mà chúng tôi nhận thấy ở các tiện ích trình xem PDF. Trong mọi trường hợp, chúng tôi sẽ tiếp tục truyền đạt công việc của mình và thường xuyên sử dụng Nhóm cộng đồng tiện ích web làm nơi để thảo luận các ý tưởng và điều chỉnh nội dung chúng tôi muốn xem tiếp theo.