Google Chrome cung cấp API chỉ truy cập được trên *.google.com
(twitter.com/lcasdev)- Google Chrome cung cấp API chỉ cho phép các trang
*.google.comtruy cập mức sử dụng CPU của hệ thống/tab, mức sử dụng GPU, mức sử dụng bộ nhớ, thông tin chi tiết về bộ xử lý và quyền truy cập backchannel ghi log - Vì cùng API này không được lộ ra cho các trang khác, đã nổ ra tranh cãi về việc liệu nhà cung cấp trình duyệt có được phép cấp đặc quyền đặc biệt cho chính website của mình hay không
- DMA đã luật hóa ý tưởng rằng các nhà cung cấp trình duyệt, với vai trò là gatekeeper Internet, phải cung cấp cùng một chức năng cho mọi bên; tùy theo cách diễn giải, việc chỉ lộ thêm thông tin cho các thuộc tính của Google có thể bị xem là vi phạm DMA
- Zoom có thể rơi vào thế bất lợi trong cạnh tranh vì không được cung cấp tính năng gỡ lỗi CPU như Google Meet
- Tính năng này được triển khai dưới dạng tiện ích mở rộng Chrome tích hợp sẵn không thể tắt và cũng không xuất hiện trong bảng tiện ích; trên Microsoft Edge và Brave, chức năng tương tự cũng chỉ được cung cấp cho miền
*.google.com
Thông tin mà API chỉ dành cho *.google.com tiết lộ
- Chrome chỉ cung cấp cho các trang
*.google.comthông tin gần với trạng thái hệ thống và gỡ lỗi- Mức sử dụng CPU của hệ thống và tab
- Mức sử dụng GPU
- Mức sử dụng bộ nhớ
- Thông tin chi tiết về bộ xử lý
- Backchannel ghi log
- Cùng API này không được lộ ra cho các trang khác và chỉ có thể dùng trên miền
*.google.com
Cách triển khai và hành vi trên các trình duyệt phái sinh từ Chromium
- Tính năng này được triển khai dưới dạng tiện ích mở rộng Chrome tích hợp sẵn không thể tắt và cũng không hiển thị trong bảng tiện ích
- Mã nguồn nằm tại đường dẫn
hangout_servicescủa Chromium - Trước đây chưa rõ liệu cùng tiện ích này có được đưa vào các trình duyệt phái sinh khác từ Chromium hay không, nhưng các cập nhật sau đó đã xác nhận hành vi sau
- Trên Microsoft Edge, tính năng này cũng chỉ được cung cấp riêng cho miền
*.google.com - Trên Brave cũng có tiện ích được cài sẵn cho phép Google chỉ lấy thông tin này trên
*.google.com, và hoạt động giống Chrome và Edge
- Trên Microsoft Edge, tính năng này cũng chỉ được cung cấp riêng cho miền
Các vấn đề về cạnh tranh và quy định
- Nếu trình duyệt chỉ cung cấp thông tin hệ thống cho một số miền của chính mình, các dịch vụ web khác sẽ khó triển khai các tính năng chẩn đoán ở cùng mức độ
- Zoom được nêu như một ví dụ không thể cung cấp tính năng gỡ lỗi CPU như Google Meet, và điều này có thể dẫn đến vấn đề ưu ái dịch vụ của chính mình từ phía nhà cung cấp trình duyệt
- Từ góc nhìn DMA, điểm tranh cãi cốt lõi vẫn là liệu gatekeeper có phải cung cấp quyền truy cập tính năng một cách bình đẳng cho mọi bên hay không
1 bình luận
Ý kiến trên Hacker News
Nhìn cái tên hangout_services thì có vẻ như một kiểu hack nợ kỹ thuật cũ được tạo ra để phát triển Google Hangouts dễ hơn
Có lẽ nó dùng để đẩy trực tiếp dữ liệu đo từ xa cho đội Hangouts. Hangouts là ứng dụng đầu tiên triển khai gọi video trong trình duyệt, và về sau nó trở thành WebRTC. Mô-đun này phơi bày mức sử dụng CPU/GPU/RAM và thông tin phần cứng mà bình thường ứng dụng không thể thấy. Có lẽ Google thấy thread Twitter này rồi sẽ chỉ xóa nó đi. Hangouts đã là sản phẩm chết, và dù mã phía server vẫn còn dùng thì hiện nay phạm vi sử dụng WebRTC rộng hơn nhiều, nên đội Chrome hẳn đang tự giám sát hiệu năng theo cách đa trang web
Dù không chuẩn, nhưng nếu là ứng dụng native thì việc này có vẻ hoàn toàn hợp lý
Tôi nghĩ mình có thể giải thích đôi chút về phần này. Nhân tiện, tôi là cựu nhân viên Google
Từng có thời tôi làm việc với GVC, nền tảng hội nghị video nội bộ của Google. Vào khoảng 2010–2011, nhiều thiết bị hội nghị video của công ty là thiết bị độc quyền kiểu Cisco Tandberg, rất đắt nên triển khai cho hàng nghìn phòng họp cũng tốn kém lớn. Cùng thời điểm đó, một đội khác đang phát triển Hangouts; tôi nhớ không rõ lúc đó nó đã tên là Google Meet hay về sau mới thành như vậy. Có vẻ tên Hangouts được chọn khi Google+ ra mắt và sản phẩm được tích hợp vào đó. Cấu hình GVC có nhiều loại, nhưng phổ biến nhất là tổ hợp màn hình/máy tính All-in-One(AIO), và đó là một PC Intel hoàn chỉnh. Vì vậy nền tảng GVC là một bản phân phối Linux tùy biến, được thiết kế để giao tiếp với các dịch vụ Google và phân phối cập nhật phần mềm. Họ cũng giữ một bản phân phối cũ để phòng trường hợp khởi động thất bại, và có nhiều vấn đề như đặt tên thiết bị. Cũng cần hỗ trợ nhiều phần cứng khác nhau như bảng cảm ứng, camera PTZ lớn, nhiều micro. Cuối cùng Hangouts trở thành stack nền tảng của GVC, thay thế gần như toàn bộ Tandberg và tiết kiệm được rất nhiều tiền. Hệ thống này chắc chắn vẫn được dùng đến năm 2017, sau đó thì tôi không biết. Giám sát cũng là một phần của nó, nên nếu thấy API chỉ dành cho *.google.com thì phải xem cho kỹ. Chỉ từ Tweet thì không thể biết Google có thể truy vấn mọi instance Chrome trên toàn thế giới hay chỉ khả dụng trên google.com. Tuy nhiên, nhìn tên hangouts_services và giới hạn domain thì có vẻ nhiều khả năng đây là hỗ trợ giám sát Chrome nhúng cho GVC. Tôi có thể sai
Trên Chrome có thể xem mức sử dụng CPU, dù tôi không rõ đó là CPU mà Meet dùng hay toàn hệ thống; nhưng dù là bên nào thì dường như cũng không thể làm bằng API thông thường. Tôi kiểm tra bằng vài tác vụ nền
yesvà chắc chắn đó là toàn hệ thống. Nói thêm là chuyện nhầm tên luôn xảy ra, nhưng GVC thật sự là một cái tên rõ ràng và tốtCó thể tự thử trực tiếp trên bất kỳ trang *.google.com nào:
chrome.runtime.sendMessage("nkeimhogjdpnpccoofpliimaahmaaome", {"method":"cpu.getInfo"}, (resp) => { console.log(resp); });Có vẻ API chỉ được phơi ra cho nội dung chạy trên *.google.com, nhưng như vậy gần như đồng nghĩa với “Google có thể truy vấn mọi instance Chrome đã truy cập trang của họ”. Ngay cả khi không dùng dịch vụ Google, Chrome mặc định cũng lấy nội dung trang tab mới từ Google, nên trên thực tế gần như 100%. Tôi không cho rằng nó đang bị dùng ác ý, nhưng nếu Google có thể chẩn đoán vấn đề theo cách này còn đối thủ trong cùng lĩnh vực thì không, đó vẫn là vấn đề. Zoom đâu có API như thế này, đúng không?
Ý là để quan sát mức sử dụng CPU trên appliance nội bộ của một nền tảng hội nghị video nội bộ, họ đã nhét plugin đi kèm này vào Google Chrome dành cho người dùng phổ thông sao?
Chắc lúc này hàng chục product manager đang tiến đến tech lead của sản phẩm mình và nói “này, trước hết cứ nghe tôi đã…”
Có vẻ tính năng này được thêm vào tháng 10/2013: https://github.com/chromium/chromium/commit/422c736b82e7ee76...
Đây là commit bundle extension Hangouts Services vào Chrome. BUG=291271, URL review: https://codereview.chromium.org/35873003. URL review tương ứng là https://codereview.chromium.org/35873003
Tôi không biết chính xác API này là gì và vì sao nó tồn tại, nhưng Firefox cũng làm điều tương tự
Có các API đặc biệt chỉ dùng được trên các miền của Mozilla và Firefox, chẳng hạn để hỗ trợ cài đặt tiện ích mở rộng hoặc trải nghiệm lần chạy đầu tiên. Chưa đầy 12 tháng trước đã có một bài blog liên quan được đăng lên Hacker News, nhưng khó tìm lại
API này công khai và có tài liệu, danh sách miền được phép cũng nằm trong UI và about:config. Bản Android trên Play Store là ngoại lệ vì họ giấu hết mọi thứ, như thể muốn biến trình duyệt thành rác thuần túy. Và nếu mang một use case hay lên Bugzilla rồi yêu cầu lịch sự, có lẽ các nhà phát triển ít nhất cũng sẽ xem xét thêm miền mặc định
Đây có thể là vi phạm luật chống độc quyền, vì tận dụng thế độc quyền ở một thị trường — trình duyệt — để giành lợi thế ở thị trường khác là hội nghị truyền hình
Đây là cách làm khá tiêu chuẩn giữa các trình duyệt. Mức rủi ro nên tương đương việc ai đó giả mạo miền mà trình duyệt dùng để tải bản cập nhật phần mềm, và nếu thật sự không thích thì có thể tắt trong phần thiết lập
[0] https://news.ycombinator.com/item?id=40631439
Nói thêm là tôi làm ở Google, nhưng không phụ trách Chrome hay API này
Tôi thấy lời giải thích này khá bình thường. Ví dụ, nếu mở Google Meet, bắt đầu một cuộc họp trống, tức “họp tức thì”, rồi trong menu “…” nhấn “Khắc phục sự cố và trợ giúp”, bạn sẽ thấy nhiều biểu đồ thống kê, bao gồm cả mức sử dụng CPU. Hình như khi máy bị tải nặng trong lúc gọi Meet, nó còn lịch sự gợi ý bạn đóng bớt tab. Khá hữu ích nên thỉnh thoảng tôi có xem. Nghĩ lại thì tôi không chắc gợi ý đóng tab có thật sự tồn tại không; thứ tôi thực sự đã dùng chỉ là màn hình thống kê
Người dùng Meet được hướng dẫn vì sao cuộc họp không hoạt động tốt, còn Zoom, Teams, Slack không làm được điều tương tự, thì trải nghiệm dùng Meet chắc chắn sẽ tốt hơn. Cũng không lạ khi mọi dịch vụ họp khác đều thúc mạnh người dùng dùng ứng dụng desktop. Ứng dụng desktop của Google Meet thực chất chính là Chrome
Có lẽ đây cũng là một trong những lý do Meet chạy tốt trên trình duyệt còn Zoom thì không, nên đặc biệt khi có nhiều người tham gia họp, người dùng Zoom muốn hiệu năng phù hợp sẽ phải dùng ứng dụng native
Cảm ơn nhân viên Google đã tự nói ra phần mà đáng ra họ nên lặng lẽ bỏ qua
Có vẻ tiêu đề bài đăng đã bị đổi hơi sai so với bản gốc. Theo tôi hiểu thì như sau
Chrome có một tiện ích mở rộng tích hợp dùng các API Chrome công khai mà các tiện ích Chrome khác cũng có thể dễ dàng dùng. Vấn đề là tiện ích này chia sẻ thông tin đó khi giao tiếp với các miền của chính Google, còn các website khác thì không thể làm vậy. Không có “API ẩn đặc biệt” nào cả
“Ẩn” nghĩa là ngay cả khi vào chrome://extensions cũng không thấy nó trong danh sách. Và như đã nói, nó cũng là một Chrome API
chrome.runtime.sendMessage( 'nkeimhogjdpnpccoofpliimaahmaaome', { method: 'cpu.getInfo' }, response => { console.log('CPU Info:\n', JSON.stringify(response, null, 2)); } );Nếu mã trình duyệt được triển khai như PWA mà lại phải yêu cầu quyền riêng để truy cập thông tin hệ thống thì sẽ kỳ lạ, vì bản thân nó là một phần chức năng của trình duyệt. Một công dụng khác của các API không công khai đã tồn tại từ lâu là tích hợp trình duyệt Chrome với các website chỉ dành cho Google cung cấp chức năng cốt lõi, như Chrome Web Store, cho phép trang web cài đặt và gỡ tiện ích mở rộng
Có vẻ như nó dùng API chrome.system.cpu, thứ mà bất kỳ extension nào cũng có thể truy cập nếu có quyền
"system.cpu"https://developer.chrome.com/docs/extensions/reference/api/s...
Có thể xem tất cả các quyền mà extension này yêu cầu tại đây:
https://source.chromium.org/chromium/chromium/src/+/main:chr...
Các ứng dụng họp video khác không có quyền truy cập kiểu này, trừ khi người dùng thực hiện một bước khá lớn là tự cài riêng extension
Không ngạc nhiên lắm. Rất đúng kiểu Google. Vấn đề là liệu các trình duyệt Chromium khác có cái này không. Edge, Brave, Chromium, Ungoogled Chromium thì sao?
"google"để tránh những thứ như thế nàyThử trên Firefox thì nó nói “hãy dùng Google Chrome để xem mức sử dụng CPU”
Safari cũng có các tính năng dành riêng cho Apple. Ví dụ khi đăng nhập vào website khác bằng tài khoản Apple, nó có thể hiện một hộp thoại đặc biệt hoạt động khác với passkey hay tự động điền mật khẩu
Trên các trình duyệt khác thì nó buộc đi qua luồng dựa trên redirect. Tôi luôn tò mò không biết cái này được triển khai trong JavaScript như thế nào. Có phải là kiểu WebAuthn với tham số riêng không?
Google từng làm việc kiểu này trước đây. Chi tiết thì tôi nhớ không rõ, nhưng hình như Native Client từng chỉ hoạt động trên Hangouts bằng danh sách cho phép ở cấp domain, hoặc đại loại vậy