Có nhiều cách để triển khai tính năng lọc nội dung và mạng trong Tiện ích Chrome. Hướng dẫn này cung cấp thông tin tổng quan về các chức năng lọc nội dung mà tiện ích có thể sử dụng, cũng như các phương pháp, kỹ thuật và API lọc khác nhau mà Tiện ích Chrome có thể sử dụng.
Lọc yêu cầu mạng
Cách chính để lọc các yêu cầu mạng trong Tiện ích Chrome là sử dụng API chrome.declarativeNetRequest. Với Declarative Net Request, nhà phát triển có thể chặn hoặc sửa đổi các yêu cầu mạng bằng cách chỉ định các quy tắc khai báo. Định dạng quy tắc Yêu cầu mạng khai báo dựa trên các chức năng của cú pháp danh sách bộ lọc mà hầu hết các trình chặn quảng cáo đều sử dụng.
Các quy tắc này có thể:
- Chặn một yêu cầu mạng.
- Nâng cấp lược đồ URL lên lược đồ bảo mật (http thành https hoặc ws thành wss).
- Chuyển hướng một yêu cầu mạng.
- Sửa đổi tiêu đề yêu cầu hoặc phản hồi.
Chrome hỗ trợ các quy tắc đi kèm với một tiện ích và những quy tắc được cập nhật linh hoạt (chẳng hạn như để phản hồi một cấu hình từ xa hoặc hoạt động đầu vào của người dùng).
Kết hợp các quy tắc lọc theo gói với tiện ích
Các quy tắc có trong gói tiện ích của bạn được gọi là "quy tắc tĩnh". Các quy tắc này được cài đặt và cập nhật khi một tiện ích được cài đặt hoặc nâng cấp. Chrome giới hạn số lượng quy tắc tĩnh mà một tiện ích có thể khai báo.
Đối với các quy tắc tĩnh của Declarative Net Request, Chrome có một nhóm dùng chung toàn cầu gồm 300.000 quy tắc mà nhóm tiện ích đã cài đặt có thể cùng sử dụng. Ngoài ra, mỗi tiện ích đều được đảm bảo có hạn mức là 30.000 quy tắc tĩnh. Ví dụ: nếu người dùng chỉ cài đặt một tiện ích lọc nội dung, thì tiện ích đó có thể sử dụng tối đa 330.000 quy tắc Declarative Net Request tĩnh. Để biết số lượng quy tắc này, danh sách bộ lọc EasyList phổ biến (được hầu hết các trình chặn quảng cáo sử dụng) có khoảng 35.000 quy tắc mạng.
Bạn có thể sắp xếp các quy tắc tĩnh về Yêu cầu mạng khai báo thành nhiều nhóm quy tắc. Tiện ích có thể chỉ định tối đa 100 bộ quy tắc tĩnh và bạn có thể bật 50 bộ quy tắc trong số này cùng một lúc.
Thêm các quy tắc lọc một cách linh động trong thời gian chạy
Bạn không thể kết hợp một số quy tắc với tiện ích. Thay vào đó, các tiện ích cần thêm chúng trong thời gian chạy. Những quy tắc này được gọi là "quy tắc động".
Đối với các quy tắc Declarative Net Request động, Chrome cho phép tối đa 30.000 quy tắc động an toàn cho mỗi tiện ích. Hầu hết các quy tắc đều được coi là quy tắc an toàn: block, allow, allowAllRequests hoặc upgradeScheme. Ngay cả khi một quy tắc không được coi là an toàn (ví dụ: redirect), bạn vẫn có thể thêm quy tắc đó một cách linh động, nhưng với giới hạn tối đa thấp hơn là 5.000. Giới hạn này cũng được tính vào giới hạn 30.000 quy tắc linh động. Để hiểu rõ hơn, 98-99% quy tắc trong danh sách bộ lọc easylist là quy tắc an toàn.
Các tiện ích lọc nội dung có thể sử dụng lần lượt các quy tắc tĩnh và quy tắc động để kết hợp các quy tắc lọc đã biết với tiện ích của chúng, đồng thời cập nhật tiện ích của chúng bằng các quy tắc lọc nội dung mới từ máy chủ của chúng bất cứ khi nào cần.
Điều chỉnh quy tắc dựa trên các yêu cầu đã quan sát được
Hệ sinh thái quảng cáo không ngừng phát triển và bộ lọc nội dung cần được cập nhật cho phù hợp. Bằng cách kết hợp chrome.webRequest và các quy tắc Declarative Net Request linh động, bạn có thể phân tích các yêu cầu mạng để phát hiện các trường hợp vi phạm quyền riêng tư tiềm ẩn và chặn các yêu cầu này trong tương lai.
Phương pháp cơ bản là:
- Phân tích các yêu cầu trên web bằng API
chrome.webRequestvà cố gắng tự động xác định những yêu cầu không đáp ứng các yêu cầu về quyền riêng tư của bạn, chẳng hạn như sử dụng công nghệ học máy. - Tạo một quy tắc Yêu cầu mạng khai báo động cho mỗi yêu cầu đã được xác định ở bước 2 để các yêu cầu tương tự sẽ bị chặn trong tương lai.
- (Không bắt buộc) Gửi quy tắc Declarative Net Request đã xác định trở lại máy chủ của bạn để quy tắc này có thể được thêm dưới dạng quy tắc Declarative Net Request tĩnh trong lần cập nhật tiện ích tiếp theo.
Lợi ích của phương pháp này là quá trình phân tích diễn ra không đồng bộ và sẽ không ảnh hưởng tiêu cực đến hiệu suất của trang web.
Cho phép người dùng xác định các quy tắc lọc của riêng họ
Bạn có thể cho phép người dùng xác định các quy tắc lọc nội dung của riêng họ bằng cách cung cấp một giao diện người dùng cấu hình bộ lọc trong tiện ích. Chuyển đổi các quy tắc do người dùng xác định này thành quy tắc Yêu cầu mạng khai báo và thêm các quy tắc này dưới dạng quy tắc động. Những quy tắc này sẽ tiếp tục được cung cấp cho người dùng vì chúng vẫn tồn tại trong các phiên trình duyệt và bản nâng cấp tiện ích. Bằng cách này, người dùng có thể thêm tối đa 30.000 quy tắc tuỳ chỉnh.
Lọc các phần tử trên trang web
Lọc yêu cầu mạng chỉ là một phần quan trọng trong việc lọc nội dung. Một phần quan trọng khác là xoá nội dung không mong muốn ngay trên các trang web. Ví dụ: hơn 40% quy tắc trong danh sách bộ lọc easylist xác định cách các ứng dụng nên ẩn các phần tử trên trang.
Bạn có thể thực hiện việc này bằng cách sử dụng tập lệnh nội dung. Tập lệnh nội dung chạy trong bối cảnh của các trang web và có thể thay đổi các trang web đó bằng cách sử dụng DOM.
Tiện ích Chrome không được phép thực thi mã được lưu trữ từ xa. Tuy nhiên, dữ liệu từ một máy chủ về những phần tử cần ẩn sẽ không bị ảnh hưởng vì đây được coi là dữ liệu cấu hình. Do đó, các quy tắc về phần tử có thể được cập nhật trong thời gian chạy bất cứ khi nào cần thiết.
Lọc các yêu cầu mạng trong tiện ích do chính sách cài đặt
Các trường hợp sử dụng trong doanh nghiệp và giáo dục thường có các yêu cầu cực kỳ nghiêm ngặt về việc lọc nội dung và mạng, chẳng hạn như lọc các yêu cầu dựa trên nội dung của chúng. Để bật các trường hợp sử dụng này, tiện ích đã cài đặt theo chính sách có thêm một cách để lọc và chặn các yêu cầu mạng. Khi sử dụng lựa chọn "chặn" với các sự kiện trong API webRequest, bạn có thể triển khai một bộ lọc nội dung có lập trình để thực thi logic tuỳ chỉnh trên mọi yêu cầu nhằm quyết định xem có nên chặn một yêu cầu hay không. Chỉ có các tiện ích do chính sách cài đặt mới được phép sử dụng tính năng này vì chúng có mức độ tin cậy cao hơn.
Chặn các yêu cầu điều hướng
Bạn có thể lọc các yêu cầu điều hướng bằng cách sử dụng các quy tắc Declarative Net Request. Ví dụ: bạn có thể muốn bỏ qua các URL theo dõi chuyển hướng người dùng đến đích đến dự kiến. Một cách để xử lý việc này là chuyển hướng yêu cầu điều hướng https://tracker.com?redirect=https%3A%2F%2Fexample.com đến một trang tiện ích (cần được định cấu hình làm tài nguyên có thể truy cập qua web). Trang này sẽ chạy một tập lệnh để trích xuất đích chuyển hướng và chuyển hướng đến đích bằng cách sử dụng window.location.replace("https://example.com") để bỏ qua trình theo dõi đường liên kết.