- Một thí nghiệm quy mô lớn đã được thực hiện để thu thập và cài đặt toàn bộ hơn 84.000 tiện ích mở rộng Firefox bằng API Add-ons của Mozilla
- Thông qua scraping, đã thu thập được 84.235 tiện ích mở rộng duy nhất, tổng dung lượng 49,3GB, và bộ dữ liệu được công khai trên Hugging Face
- Trong quá trình cài đặt, phát hiện nhiều tiện ích mở rộng độc hại khác nhau như lừa đảo, spam, PUA (ứng dụng có khả năng không mong muốn)
- Cuối cùng cài đặt thành công 84.194 tiện ích mở rộng, nhưng trình duyệt được xác nhận là gần như không thể sử dụng
- Thí nghiệm được đánh giá là một trường hợp phơi bày toàn diện quy mô, chất lượng và các vấn đề bảo mật của hệ sinh thái tiện ích mở rộng Firefox
Thí nghiệm cài đặt mọi tiện ích mở rộng Firefox
- Một thí nghiệm quy mô lớn nhằm thu thập, phân tích và cài đặt toàn bộ hơn 84.000 tiện ích mở rộng cho Firefox
- Dùng Add-ons API công khai của Mozilla để scrape toàn bộ danh sách tiện ích mở rộng và tiến hành cài đặt thực tế
- Bộ dữ liệu được công khai trên Hugging Face để bất kỳ ai cũng có thể truy cập
- Sau nhiều lần thử, đã cài đặt thành công 84.194 tiện ích mở rộng, nhưng trình duyệt gần như không thể sử dụng
- Qua thí nghiệm, đã bộc lộ quy mô của hệ sinh thái tiện ích mở rộng, chất lượng, các tiện ích độc hại, spam, PUA (ứng dụng có khả năng không mong muốn)
Scraping tiện ích mở rộng Firefox
- addons-server API của Mozilla có thể truy cập mà không cần xác thực, và endpoint
search cho phép truy vấn danh sách tiện ích theo từng trang
- Với cách sắp xếp mặc định (
recommended,users) chỉ truy vấn được khoảng 30.000 tiện ích, nên đã kết hợp nhiều tùy chọn sắp xếp như created, rating, hotness, updated để lấy các tiện ích bị bỏ sót
- Dùng tham số
exclude_addons để thu thập thêm cả các tiện ích sau trang 600
- Thông qua các yêu cầu song song theo từng danh mục, đã thu được 84.235 tiện ích mở rộng duy nhất, kích thước trung bình 584,9KB, tổng dung lượng 49,3GB
- Bộ dữ liệu cuối cùng đã được tải lên Hugging Face và công khai
- Ở bản cập nhật ngày 11 tháng 4 năm 2026, việc scraping toàn bộ chính xác và hiệu quả được triển khai bằng các bộ lọc
created__gte, created__lte
Phân tích tiện ích mở rộng Firefox
- Tiện ích lớn nhất là dmitlichess (196,3MB), chứa hơn 2.000 tệp âm thanh
- 10 tiện ích đứng đầu phần lớn chứa mô hình AI, ứng dụng Unity, tài nguyên hình ảnh và các nội dung dung lượng lớn khác
- Tiện ích nhỏ nhất là theTabs-saver (7,5KB), không có mã nguồn
- Tiện ích bị chấm điểm thấp nhất là Tab Stack for Firefox
- Tiện ích lâu đời nhất là Web Developer
- Tiện ích có nhiều ảnh chụp màn hình nhất là RDS Bar (54 ảnh)
- Tiện ích yêu cầu nhiều quyền nhất là FalscheLaden (3.695 yêu cầu quyền), tiếp theo là Google Dark Theme (2.675 quyền)
- Nhà phát triển phát hành nhiều tiện ích nhất là Dr. B (84 tiện ích), phần lớn có README nhưng không có biểu tượng
-
Lừa đảo và tiện ích độc hại
- Trong bộ dữ liệu, phát hiện nhiều tiện ích lừa đảo ví tiền mã hóa
- Ví dụ: “Іron Wаllеt” lấy URL từ NocoDB sau 3 giây cài đặt rồi chuyển sang trang lừa đảo
- Một số tiện ích nhận seed phrase rồi gửi về máy chủ
- Sau khi báo cáo, phần lớn đã bị Mozilla gỡ bỏ vào ngày hôm sau
- Cũng phát hiện trường hợp khóa API có quyền ghi, nên đã trực tiếp xóa dữ liệu
-
Tiện ích spam SEO
- Lợi dụng liên kết “Homepage” trên trang tiện ích làm backlink
- Các tiện ích do AI tạo ra như Typo Sniper, Tab Fortune Teller dẫn tới các trang casino
- Tồn tại nhiều tiện ích kiểu “Code Injector”, dùng cùng cấu trúc mã và miền ngẫu nhiên
- Phần lớn được xác nhận là tạo trong năm 2025
-
Tiện ích PUA (ứng dụng có khả năng không mong muốn)
- Có hơn 20 tiện ích theo mẫu “Custom Web Search”, với tổng cộng hơn 700.000 người dùng
- Tất cả đều có cùng cấu trúc và miền, ghi rõ “Innover Online Group Ltd”
- Mozilla đã vô hiệu hóa một phần trong số đó (sở hữu 115.000 người dùng)
- Sử dụng mã liên kết Yahoo
safeplexsearch, và tồn tại phiên bản dành riêng cho Firefox
- Công ty tương tự Atom Apps cũng phân phối tiện ích theo cách này, tổng cộng 220.000 người dùng hằng ngày
-
Tóm tắt thống kê
- 34,3% tiện ích có 0 người dùng hằng ngày
- Từ 10 người dùng trở lên: 25,1%, từ 100 trở lên: 10,6%, từ 1.000 trở lên: 3,2%, từ 10.000 trở lên: 0,7%
- 76,7% là mã nguồn mở (theo giấy phép SPDX)
- 23% là tiện ích được tạo sau thời điểm bài viết được đăng
- Trong số đó, 19% không có người dùng, đánh giá, biểu tượng hay lượt tải nào
- 2,4% là tiện ích trả phí, trong đó 38,1% là mã nguồn mở
Thử cài đặt mọi tiện ích
- Lưu tệp
.xpi của từng tiện ích vào thư mục profile bằng tên GUID rồi chỉnh sửa extensions.json
- Xóa
addonStartup.json.lz4 và can thiệp extensions.json để tự động kích hoạt
-
Lần thử 0: 65.335 tiện ích (Windows VM)
- Đã thử cài đặt bằng phương thức Enterprise Policy nhưng thiếu bộ nhớ và hệ thống bị treo
-
Lần thử 1: khoảng 1.000 tiện ích
- Tải trực tiếp rồi phân phối thủ công, cài đặt thành công
- Một số tiện ích thay đổi toàn bộ văn bản thành một chuỗi cụ thể
- Do nhiều tiện ích bảo mật nên chặn miền, popup cảnh báo xuất hiện thường xuyên
-
Lần thử 2: 65.335 tiện ích
- Do quên xóa
addonStartup.json.lz4, số tiện ích thực sự được kích hoạt chỉ ở mức khoảng 1.000
- Trong lúc mở
about:addons, Firefox bị treo và không thể khởi động lại
-
Lần thử 3: 65.335 tiện ích (Mac)
- Tốc độ giảm khi tải song song, tổng cộng mất 6 giờ
- Khi chạy Firefox thì không phản hồi,
extensions.json có kích thước 144MB
- Lượng ghi đĩa vượt quá 400GB
-
Lần thử 4~10: 1.000~6.000 tiện ích
- Tới 3.000 tiện ích thì vẫn có thể tải trang web
- Từ hơn 4.000 tiện ích trở đi thì mọi trang web đều bị chặn, tới 6.000 tiện ích thì chỉ còn
about:addons tải được
-
Lần thử 11: 84.194 tiện ích (sau 6 tháng)
- Sử dụng máy ảo (VM) trong môi trường RAM 16~24GB
- Tải xuống mất 1 giờ 43 phút, một số tiện ích bị Defender phát hiện
- Khi chạy Firefox,
extensions.json tăng lên 189MB, rồi bị buộc đóng sau 39 phút
- Sau đó thử lại bằng cách chạy
enable.js
-
Kết quả Launch 1~3
- Launch 1: chờ 39 phút không render gì rồi dừng
- Launch 2: trình duyệt xuất hiện rồi crash trong vòng 3 phút
- Launch 3: sau khi chờ lâu đã ổn định thành công, xác nhận tải được 84.194 tiện ích
Kiểm tra sử dụng với mọi tiện ích
-
about:addons
- Không tải được trang cài đặt, còn trang chỉ mục thì mất 6 giờ mới tải hoàn toàn
- Mức sử dụng bộ nhớ duy trì ở 27~37 GiB
- Biểu tượng không hiển thị, độ trễ phản hồi rất nghiêm trọng
-
about:support
- Hiển thị tổng cộng 84.205 tiện ích nhưng bao gồm cả tiện ích tích hợp sẵn
- Xác nhận số tiện ích ngoài thực sự được cài là 84.194
-
about:preferences
- Xuất hiện nhiều tùy chọn New Tab, xảy ra xung đột và crash
-
New Tab
- Chỉ có Firefox Home tải bình thường, các tiện ích còn lại đều thất bại
-
moz-extension
- Tiện ích buyPal tự động thay thế tab và là tiện ích duy nhất tải bình thường
- Sau đó Firefox lại crash
-
example.com
- Dù chờ 24 giờ trang vẫn không tải, suy đoán có nhiều tiện ích chặn
-
about:telemetry
- Khi bấm vào Environment Data thì crash ngay lập tức
Đánh giá khả năng sử dụng
- Không thể
- Firefox gần như không hoạt động khi cài 84.000 tiện ích
Đề xuất nghiên cứu thêm
- Phân tích nguyên nhân
about:addons mất 6 giờ để tải và nguyên nhân example.com không tải được
- Thử nghiệm trên các trình duyệt khác hỗ trợ
.xpi như Kagi Orion, GNOME Web
- Thử nghiệm cài toàn bộ theme (hơn 500.000), hoặc toàn bộ user script và style
- Việc cài toàn bộ tiện ích của Chrome Web Store là bất khả thi về quy mô
Tóm tắt chú thích
- Tổng cộng có 8 tiện ích bị bỏ sót khi scraping hoặc đã bị xóa
- Các con số được cập nhật vào tháng 4 năm 2026 sau phiên bản ban đầu viết vào tháng 9 năm 2025
- “Foreshadowing” được nhắc đến như một thủ pháp báo trước trong văn học
1 bình luận
Ý kiến trên Hacker News
Đã nhận giải "Middle Finger Emoji Sticker"
Có tóm tắt ngắn quá trình đó và đăng lên blog
Bản gốc có thể xem tại đây
Làm nhớ đến cuộc chiến thanh công cụ Internet Explorer ngày xưa
Nhớ là ở các quán net lúc nào cũng có ít nhất hai thanh công cụ Ask.com, Google, Yahoo, về sau là Bing được cài sẵn
Đã tìm hiểu vì sao việc này lại mất lâu đến vậy
13 năm trước dùng extensions.sqlite chứ không phải extensions.json
Giờ cấu trúc là cứ mỗi 20ms lại tuần tự hóa toàn bộ tệp rồi ghi đè lại, nên với 15 tiện ích thì ổn nhưng với 84.194 tiện ích thì thành vấn đề
Tôi khá tò mò không biết đã chọn giá trị debounce này như thế nào. Cũng thắc mắc không biết tiện ích nào lại ghi vào extensions.json nhiều lần mỗi giây như vậy
Thực tế thì chẳng có trang nào mở ra tử tế cả, nhưng bài viết lại cực kỳ thú vị
Tôi đã cười rất lâu ở đoạn “bật crash reporting”. Chắc với đội Mozilla thì đúng là chuyện kinh dị
Nhưng tôi không tìm được cái mà tác giả đã tải lên. Có thể xem tại crash-stats.mozilla.org
Nếu hồ sơ vẫn còn, có thể tìm crash ID bằng hướng dẫn này
Bài này thực sự kỳ quặc nhưng rất ngầu
Đặc biệt ấn tượng với việc họ tìm ra lỗi hiệu năng trên ít nhất một trong các trang about:. Nhất định nên điều tra tiếp
Danh sách tiện ích cũng có thể xem qua sitemap
Firefox Add-ons sitemap,
Chrome Web Store sitemap,
và Edge sitemap cũng đáng tham khảo
Video buồn cười đến mức tôi chảy nước mắt
Chắc cảm giác lướt web của người lớn tuổi gần như không rành máy tính là như thế này. Ước gì ai đó cũng làm trò này với Chrome
“Bus dịch vụ này được thiết kế quá mức cho nhu cầu của chúng tôi, nhưng broker lại quá chậm với 84.205 microservice”
Cảm giác căng thẳng vô tận này thật quá quen thuộc
Làm tôi nhớ đến gói NPM huyền thoại từng phụ thuộc vào mọi gói NPM
Bài liên quan đọc cực kỳ buồn cười
Tôi rất đồng cảm với câu “sau khi cài gần như mọi tiện ích bằng cách này, mọi thứ tôi từng làm trước đó đều trông thật ngớ ngẩn”
Tôi cũng từng cảm thấy một kiểu trống rỗng tương tự