Đây là bài viết thứ 33 trong chuỗi giới thiệu các tính năng bảo vệ quyền riêng tư mới trên trình duyệt iBrowe. Bản cập nhật này tổng hợp công việc của Anton Lazarev (Kỹ sư nghiên cứu cấp cao) và Moritz Schafhuber (Kỹ sư DevOps trưởng), được biên soạn bởi Shivan Kaul Sahib (Phó chủ tịch phụ trách Quyền riêng tư và Bảo mật).


📋 Tổng quan

iBrowe hiện đã chặn mặc định các thông báo chấp thuận cookie nhằm ngăn chặn popup phiền toái và bảo vệ quyền riêng tư người dùng. Tuy nhiên, cách các website triển khai banner cookie rất đa dạng — nếu xử lý thủ công có thể dẫn đến lỗi hiển thị hoặc bỏ sót phiên bản không phải tiếng Anh. 🍪 Cookiecrumbler là công cụ tự động mới của chúng tôi, sử dụng mô hình ngôn ngữ nguồn mở (LLM) để phát hiện các banner cookie, đề xuất quy tắc chặn chính xác và thậm chí nhận diện các biến thể tùy theo khu vực hoặc ngôn ngữ. Chúng tôi đã mở mã nguồn Cookiecrumbler và công khai kết quả crawl dưới dạng issue trên GitHub để cộng đồng cùng đánh giá và đóng góp, giúp loại bỏ cookie banner quy mô lớn mà không làm hỏng giao diện website.


⚠️ 1. Thách thức khi chặn thông báo cookie

1.1 Gây phiền toái & Rủi ro quyền riêng tư

  • Làm người dùng khó chịu: Hầu hết trang web hiện đại đều hiển thị banner cookie ngay khi truy cập, che khuất nội dung hoặc cản trở quá trình đọc.
  • Kiểm soát theo dõi không hiệu quả: Dù chọn “Từ chối tất cả”, nhiều hệ thống vẫn âm thầm tải mã theo dõi hoặc pixel, vô hiệu hóa ý nghĩa thực sự của lựa chọn đó.

1.2 Tại sao các quy tắc chặn chung không đủ hiệu quả

  • Cách triển khai đa dạng: Banner cookie có thể là popup JavaScript, modal HTML, thanh cố định dưới chân trang hoặc lớp phủ CSS. Một số banner tĩnh, một số được tạo động dựa trên vị trí người dùng.
  • Sự khác biệt vùng miền và ngôn ngữ: Một trang web có thể hiển thị banner tiếng Pháp khi truy cập từ Pháp, nhưng hiển thị tiếng Nhật nếu truy cập từ Nhật. Các bộ lọc chung thường bỏ sót những biến thể này.
  • Rủi ro lỗi hiển thị: Nếu bộ lọc chặn quá rộng (ví dụ chặn toàn bộ thẻ <div>), có thể vô tình ẩn các phần tử thiết yếu như menu điều hướng, biểu mẫu hoặc nội dung động.

Do đó, các bộ lọc quảng cáo truyền thống thường chỉ áp dụng một số bộ chọn chung, dễ gây lỗi giao diện hoặc bỏ sót banner cookie. Cookiecrumbler giải quyết vấn đề này bằng cách kết hợp phát hiện tự động với kiểm tra thủ công, đảm bảo chặn chính xác mà không làm hỏng trang web.


⚙️ 2. Giới thiệu Cookiecrumbler

2.1 Cookiecrumbler là gì?

🍪 Cookiecrumbler là một framework mã nguồn mở có khả năng:

  • Thu thập dữ liệu website phổ biến: Sử dụng danh sách Tranco theo khu vực để lấy các tên miền phổ biến nhất ở từng quốc gia.
  • Tải trang qua trình duyệt không giao diện: Triển khai Puppeteer mô phỏng lưu lượng truy cập từ từng khu vực (ví dụ Châu Âu, Châu Á, Bắc Mỹ).
  • Phát hiện phần tử nghi vấn: Trích xuất các node DOM có thể là banner (popup, overlay, modal, footer).
  • Phân loại và đề xuất quy tắc bằng LLM: Gọi LLM nguồn mở nhẹ để phân loại và đề xuất quy tắc chặn (CSS selector hoặc dựa trên JavaScript).
  • Công khai kết quả lên GitHub: Mỗi quy tắc chặn (và trường hợp nghi vấn) được đưa lên repo công khai dưới dạng issue để cộng đồng đánh giá.

Việc tự động hóa phát hiện bằng LLM, kết hợp với quá trình tinh chỉnh thủ công, giúp Cookiecrumbler mở rộng trên hàng ngàn website và hàng chục ngôn ngữ.


🔍 3. Cách Cookiecrumbler hoạt động

3.1 Xây dựng danh sách website theo khu vực

  • Tùy chỉnh danh sách Tranco: Tạo danh sách top 10.000 website phổ biến theo từng khu vực địa lý.
  • Sử dụng proxy theo khu vực: Mỗi phiên Puppeteer tải trang qua proxy tại quốc gia mục tiêu để website hiển thị banner phù hợp khu vực.

3.2 Quy trình thu thập tự động

  • Tác vụ CI định kỳ: Hệ thống CI lập lịch chạy crawl theo danh sách từng khu vực.

  • Kết xuất không giao diện: Khởi chạy Chromium headless, thiết lập geolocation qua proxy và đợi trang tải xong hoàn toàn.

  • Trích xuất ứng viên:

    • Quét DOM tìm các container overlay (ví dụ div\[id\*="cookie"], section\[class\*="consent"], footer\[class\*="banner"]).
    • Lưu ảnh chụp màn hình và nội dung văn bản bên trong node để đánh giá thủ công.

3.3 Phân loại bằng LLM

  • Mô hình nhẹ: Sử dụng LLM nguồn mở như Llama Tiny hoặc phiên bản thấp của OpenAI, tinh chỉnh trên tập dữ liệu banner thủ công.

  • Thiết kế prompt: Yêu cầu mô hình trả lời: “Đây có phải là banner cookie không? Nếu có, đề xuất quy tắc CSS để ẩn.”

  • Xử lý phản hồi:

    • Nếu “Có”, lưu quy tắc được đề xuất.
    • Nếu “Không”, loại bỏ node đó.

3.4 Quy trình xác minh thủ công

  • Tạo issue trên GitHub: Mỗi trường hợp phát hiện sẽ tạo issue chứa:

    • URL website
    • Khu vực phát hiện
    • Ảnh chụp banner
    • Quy tắc CSS hoặc script đề xuất
  • Đánh giá của maintainer:

    • Xác nhận có phải banner cookie hay không
    • Chỉnh sửa quy tắc nếu cần
    • Đóng issue sau khi thêm vào bộ lọc mặc định của iBrowe.

🌐 4. Xử lý banner đa ngôn ngữ và đặc thù vùng miền

Cookiecrumbler hỗ trợ nhiều điểm nhìn song song để phát hiện các biến thể:

  • Thông báo kiểu GDPR tại EU (Anh, Đức, Pháp, Tây Ban Nha,…)
  • Biến thể khu vực Châu Á - Thái Bình Dương (Nhật, Hàn, Trung Quốc, Thái Lan,…)
  • Thông báo tại Mỹ và châu Mỹ Latin (Bồ Đào Nha-Brazil, Tây Ban Nha, Anh-Mỹ,…)

Thông qua việc xoay vòng proxy và user-agent, cùng mô hình LLM được tinh chỉnh trên dữ liệu đa ngôn ngữ, Cookiecrumbler có thể phát hiện cả khi banner sử dụng font tùy chỉnh hoặc ký tự phi Latin.


🔨 5. Công khai & hợp tác trên GitHub

5.1 Repository công khai và mẫu issue

**Detected Banner**:  
![screenshot](link-to-thumbnail.png)

**Region**: Europe (France)  
**Candidate Selector**: `example.com###cookie-consent-overlay`  
**LLM Confidence**: 92%

**Reviewer Notes**:  
- Confirmed that this is indeed a cookie banner.  
- Adjusted CSS to `.cookie-popup` to avoid blocking promotional banner on homepage.  

5.2 Tích hợp vào bộ lọc mặc định

Khi được phê duyệt, quy tắc chặn sẽ được thêm vào filters-cookie-consent.txt của iBrowe.

Bản cập nhật bộ lọc sẽ được đưa vào bản phát hành tiếp theo trên iBrowe Desktop, Android và sắp tới là iOS.


🔒 6. Ưu tiên bảo vệ quyền riêng tư

  • Xử lý hoàn toàn phía máy chủ: Người dùng không gửi dữ liệu truy cập hoặc nội dung trang web.
  • Mô hình LLM chạy nội bộ: Không gửi HTML hoặc ảnh chụp màn hình ra bên ngoài.
  • Kiểm tra thủ công bắt buộc: Giảm thiểu chặn sai, đảm bảo chỉ chặn đúng phần tử thông báo cookie.

📈 7. Hiệu quả đạt được

  • Giảm báo lỗi giao diện: Ít phản hồi từ người dùng liên quan lỗi hiển thị do chặn cookie banner.
  • Tăng độ phủ: Hiện đã chặn được 97% cookie banner trên top 10.000 website châu Âu (trước đây khoảng 70%).
  • Hỗ trợ đa ngôn ngữ: Đã phát hiện và xử lý thành công banner trên website tiếng Thái, Hàn, Nga, Ả Rập — những khu vực trước đây bị bỏ sót.

🔮 8. Định hướng tương lai

  • Tích hợp Cookiecrumbler vào trình duyệt: Phát hiện banner thời gian thực, cho phép người dùng chặn ngay trên thiết bị.
  • Tự động tinh chỉnh quy tắc: Đề xuất thêm script JavaScript (tự động bấm “Chấp nhận tất cả” hoặc ẩn popup).
  • Mở rộng phạm vi phát hiện: Nhận diện thêm các lớp phủ gây phiền khác như xác minh tuổi, chuyển hướng khu vực, video tự phát…

🎉 9. Kết luận

Cookiecrumbler là bước tiến lớn trong việc tự động hóa chặn cookie banner trên iBrowe — kết hợp thu thập dữ liệu nhận biết vùng miền, phân loại bằng LLM nguồn mở, và tinh chỉnh quy tắc dựa trên cộng đồng. Bằng cách mở mã nguồn và công khai kết quả trên GitHub, chúng tôi mời cộng đồng cùng tham gia xây dựng bộ lọc toàn cầu chính xác và bền vững.

Cùng nhau, chúng ta đang làm cho Web trở nên riêng tư và gọn gàng hơn — từng “vụn cookie” một. 🚀