SENSEL — AI sáng tạo & trải nghiệm nội dung số
HƯỚNG DẪN SENSEL

declarativeNetRequest trong Manifest V3 là gì? Vì sao adblock trên Chrome dùng API này?

Trong Manifest V3, declarativeNetRequest (DNR) là API để extension yêu cầu Chrome áp dụng các quy tắc lên request mạng mà không cần extension đọc và xử lý từng request bằng code chặn đồng bộ như cách cũ. Đây là nền tảng quan trọng của nhiều công cụ lọc nội dung trên Chrome hiện nay.

Trả lời nhanhdeclarativeNetRequest là API rule-based của Chrome: extension khai báo điều kiện và hành động như block, redirect hoặc sửa header; Chrome thực thi các rule phù hợp. DNR có static, dynamic và session rules. Nó không có nghĩa “adblock chỉ được dùng một danh sách cố định”, nhưng extension phải làm việc trong mô hình và giới hạn API của Chrome.
Minh họa Manifest V3 và declarativeNetRequest với các rule lọc request trong Chrome extension
Minh họa Manifest V3 và declarativeNetRequest với các rule lọc request trong Chrome extension.

1. DNR chuyển quyết định chặn từ “code xử lý từng request” sang “rule cho Chrome thực thi”

Chrome mô tả declarativeNetRequest là API cho phép extension chặn hoặc sửa network request bằng cách chỉ định các rule mang tính khai báo. Mỗi rule thường gồm một condition để xác định request phù hợp và một action như block, allow, redirect hoặc modifyHeaders.

Điểm quan trọng là extension không cần giữ một listener chặn đồng bộ để xem toàn bộ nội dung request rồi tự quyết định từng lần. Chrome có thể đánh giá rule trong engine của trình duyệt. Đây là một phần trong hướng Manifest V3 nhằm cải thiện bảo mật, quyền riêng tư và hiệu năng của nền tảng extension.

Đối với người dùng, điều này giải thích vì sao adblock MV3 thường nói đến “rulesets”, “dynamic rules” và quota thay vì chỉ nói về filter list như trước.

2. Ba loại chính: static, dynamic và session

Static rules được đóng gói cùng extension và được cài/cập nhật khi extension cài mới hoặc nâng cấp. Chúng nằm trong các file JSON và được khai báo trong manifest. Dynamic rules được extension thêm/xóa bằng JavaScript khi chạy và tồn tại qua các phiên trình duyệt cũng như qua việc nâng cấp extension.

Session rules cũng được quản lý bằng JavaScript nhưng chỉ tồn tại trong phiên; Chrome xóa chúng khi trình duyệt tắt và khi cài phiên bản extension mới. Mỗi loại phục vụ một mục đích khác nhau: static cho nền tảng rule ổn định, dynamic cho tùy chỉnh bền, session cho trạng thái tạm thời.

Vì vậy nói “MV3 chỉ cho phép rule tĩnh” là không đúng. DNR có nhiều lớp rule với vòng đời khác nhau.

3. DNR vẫn liên quan đến permissions và host access

Extension cần khai báo quyền phù hợp như declarativeNetRequest hoặc declarativeNetRequestWithHostAccess. Chrome cũng có host permissions để xác định extension được tương tác với những URL nào. Tùy API và action, host access có thể ảnh hưởng khả năng áp dụng rule.

Điều này quan trọng khi chẩn đoán: một adblock có DNR nhưng không được cấp phạm vi site cần thiết vẫn có thể không hoạt động như mong đợi trên một host. Người dùng có thể thay đổi site access trong Chrome, vì thế hiệu quả không chỉ phụ thuộc “bộ rule mạnh hay yếu”.

Permission warning mô tả năng lực mà extension được cấp, không tự chứng minh extension đang thu thập dữ liệu. Mức độ an toàn còn phải đánh giá thêm qua privacy policy, publisher và cách extension xử lý dữ liệu.

4. Rule limits có thật, nhưng không nên hiểu thành một con số duy nhất

Chrome đặt giới hạn cho số rulesets và rule tùy loại. Tài liệu DNR hiện nêu static rulesets, dynamic rules và session rules có quota khác nhau; các phiên bản Chrome mới cũng đã thay đổi một số giới hạn theo thời gian.

Do đó một bài viết cũ nói “MV3 chỉ cho 30.000 rule” có thể thiếu ngữ cảnh hoặc lỗi thời. Khi đánh giá một blocker, nên nhìn cách công cụ tổ chức static rulesets, sử dụng safe dynamic rules, tối ưu filter và cập nhật theo phiên bản Chrome.

Người dùng cuối không cần thuộc lòng quota. Điều cần hiểu là DNR là một hợp đồng API: extension phải thiết kế trong các giới hạn do Chrome quy định.

5. DNR có ý nghĩa gì khi chọn adblock trên Chrome?

Hai blocker cùng dùng DNR vẫn có thể khác nhau đáng kể. Khác biệt nằm ở bộ lọc, cách biên dịch filter thành rule, logic cho phép/ngoại lệ, tốc độ cập nhật, UI, quyền và cách xử lý những phần không phải network request.

DNR cũng không đảm bảo một blocker luôn hoạt động với YouTube. Nền tảng có thể thay đổi cách phân phối hoặc render quảng cáo; extension cần thích nghi trong phạm vi API hiện hành.

Kết luận: declarativeNetRequest là “ngôn ngữ rule” giữa extension và Chrome cho network filtering trong MV3. Hiểu static/dynamic/session rules giúp đọc đúng các tuyên bố kỹ thuật của adblock.

Cài SENSEL Adblock và kiểm tra trên chính máy của bạn

SENSEL là tiện ích chặn quảng cáo cho Google Chrome Desktop, tập trung giảm quảng cáo gây gián đoạn khi xem YouTube. Cài miễn phí từ Chrome Web Store chính thức, sau đó kết nối tài khoản để dùng thử 7 ngày nếu đủ điều kiện. Không cần thanh toán trước và không tự động gia hạn.

Xem tính năng, phạm vi hỗ trợ và gói sử dụng

Nguồn chính thức và tài liệu tham khảo

Bài được đối chiếu với tài liệu chính thức tại thời điểm cập nhật 07/09/2026. Chrome, YouTube, Windows, macOS và chính sách quảng cáo có thể thay đổi; khi áp dụng hãy ưu tiên tài liệu hiện hành.

  1. Chrome for Developers — declarativeNetRequest API
  2. Chrome for Developers — Content filtering
  3. Chrome for Developers — What is Manifest V3?

Câu hỏi thường gặp

declarativeNetRequest có phải chỉ dùng rule tĩnh không?

Không. DNR có static, dynamic và session rules với vòng đời khác nhau.

Dynamic rules có mất khi cập nhật extension không?

Theo tài liệu Chrome, dynamic rules tồn tại qua browser sessions và extension upgrades; session rules thì bị xóa khi browser tắt hoặc cài phiên bản mới.

DNR có đảm bảo chặn được mọi quảng cáo YouTube không?

Không. DNR là API thực thi rule; hiệu quả còn phụ thuộc rule, quyền, cách nền tảng hoạt động và thay đổi theo thời gian.