Có nhiều cách khác nhau để triển khai tính năng lọc nội dung và mạng trong Tiện ích của 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 có sẵn cho tiện ích cũng như các phương pháp lọc, kỹ thuật và API mà Tiện ích của Chrome có thể sử dụng.
Lọc yêu cầu mạng
Phương pháp chính để lọc yêu cầu mạng trong Tiện ích của Chrome là sử dụng API chrome.declarativeNetRequest
. Với Yêu cầu mạng khai báo, 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 khả 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 sử dụng.
Những quy tắc này có thể:
- Chặn một yêu cầu kết nối 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 yêu cầu mạng.
- Sửa đổi tiêu đề của 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à các quy tắc đó được cập nhật động (chẳng hạn như để phản hồi cấu hình từ xa hoặc hoạt động đầu vào của người dùng).
Quy tắc bộ lọc nhóm với tiện ích của bạn
Các quy tắ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 Yêu cầu mạng khai báo tĩnh, Chrome có một nhóm 300.000 quy tắc dùng chung trên toàn cầu,các quy tắc này có thể được sử dụng cùng nhau bằng tập hợp các tiện ích đã cài đặt. Ngoài ra, mỗi tiện ích đều được đảm bảo trợ cấp 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 này có thể sử dụng tối đa 330.000 quy tắc Yêu cầu mạng khai báo 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, bao gồm khoảng 35.000 quy tắc mạng.
Các quy tắc Yêu cầu mạng khai báo tĩnh có thể được sắp xếp thành các tập hợp quy tắc khác nhau. Tiện ích có thể chỉ định tối đa 100 tập quy tắc tĩnh và có thể bật 50 bộ quy tắc này cùng một lúc.
Tự động thêm các quy tắc bộ lọc trong thời gian chạy
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 phải 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 Yêu cầu mạng khai báo linh độ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 quy tắc được coi là quy tắc an toàn: block
, allow
, allowAllRequests
hoặc upgradeScheme
. Ngay cả khi một quy tắc được coi là không an toàn (ví dụ: redirect
), bạn vẫn có thể thêm các quy tắc đó theo phương thức linh động. Tuy nhiên, giới hạn tối đa thấp hơn là 5.000 cũng được tính vào giới hạn 30.000 quy tắc linh động. Để bạn dễ hình dung, 98-99% quy tắc trong danh sách bộ lọc danh sách đơn giản là quy tắc an toàn.
Tiện ích lọc nội dung có thể sử dụng quy tắc tĩnh và động tương ứng để nhóm các quy tắc lọc đã biết với tiện ích và cập nhật tiện ích của chúng với các quy tắc lọc nội dung mới từ máy chủ mỗi khi cần.
Điều chỉnh quy tắc dựa trên các yêu cầu được ghi nhận
Hệ sinh thái quảng cáo không ngừng thay đổi và cần phải cập nhật bộ lọc nội dung cho phù hợp. Bằng cách kết hợp chrome.webRequest
và các quy tắc Yêu cầu mạng khai báo động, bạn có thể phân tích các yêu cầu mạng để phát hiện hành vi vi phạm quyền riêng tư tiềm ẩn và chặn các hành vi này trong tương lai.
Phương pháp cơ bản là:
- Phân tích các yêu cầu web bằng API
chrome.webRequest
và cố gắng tự động xác định các yêu cầu không đáp ứng 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 quy tắc Yêu cầu mạng khai báo động cho từng 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 Yêu cầu mạng khai báo đã xác định về máy chủ của bạn để có thể thêm quy tắc đó làm quy tắc Yêu cầu mạng khai báo 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à việc 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 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 giao diện người dùng cấu hình bộ lọc trong tiện ích của bạn. Chuyển đổi các quy tắc do người dùng xác định này thành các quy tắc Yêu cầu mạng khai báo và thêm các quy tắc đó dưới dạng quy tắc động. Người dùng sẽ vẫn thấy các quy tắc này khi các quy tắc đó được duy trì qua các phiên hoạt động của trình duyệt và quá trình nâng cấp tiện ích. Khi sử dụng phương pháp 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
Việc lọc yêu cầu mạng chỉ là một phần quan trọng của quá trình lọc nội dung. Một phần quan trọng khác là xoá trực tiếp nội dung không mong muốn khỏi các trang web. Ví dụ: hơn 40% quy tắc trong danh sách bộ lọc danh sách dễ dàng xác định cách ứng dụng khách nên ẩn các phần tử trang.
Bạn có thể làm 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 ngữ cảnh của trang web và có thể thay đổi các tập lệnh này bằng cách sử dụng DOM.
Tiện ích của Chrome không được phép thực thi mã được lưu trữ từ xa. Tuy nhiên, dữ liệu về các phần tử cần ẩn từ máy chủ 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 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 yêu cầu mạng trong các tiện ích đã cài đặt theo chính sách
Các trường hợp sử dụng của doanh nghiệp và tổ chức giáo dục thường có các yêu cầu cực kỳ nghiêm ngặt đối với 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. Để cho phép các trường hợp sử dụng này, các 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 tuỳ 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. Bộ lọc này thực thi logic tuỳ chỉnh trên mọi yêu cầu để quyết định xem có nên chặn một yêu cầu hay không. Điều này chỉ áp dụng với các tiện ích được cài đặt theo chính sách vì các tiện ích này có mức độ tin cậy cao hơn.
Chặn các yêu cầu chỉ đườ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 Yêu cầu mạng khai báo. 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 của họ. Có một cách xử lý vấn đề 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 dưới dạng tài nguyên có thể truy cập trên web). Sau đó, trang này sẽ chạy một tập lệnh để trích xuất mục tiêu chuyển hướng và chuyển hướng tới đích đến bằng cách sử dụng window.location.replace("https://example.com")
để tránh né trình theo dõi đường liên kết.