Google Chrome Menyediakan API yang Hanya Bisa Diakses dari *.google.com
(twitter.com/lcasdev)- Google Chrome menyediakan API yang hanya mengizinkan situs
*.google.commengakses penggunaan CPU sistem/tab, penggunaan GPU, penggunaan memori, informasi prosesor terperinci, dan akses backchannel logging - Karena API yang sama tidak diekspos ke situs lain, muncul perdebatan apakah vendor browser boleh memberikan hak istimewa khusus ke situs mereka sendiri
- DMA mengkodifikasikan dalam hukum gagasan bahwa vendor browser sebagai gatekeeper internet harus menyediakan fungsi yang sama untuk semua pihak, dan bergantung pada interpretasi, pemberian informasi tambahan hanya ke properti Google dapat menjadi pelanggaran DMA
- Zoom bisa berada pada posisi yang kurang menguntungkan dalam persaingan karena tidak mendapatkan fitur debugging CPU seperti Google Meet
- Fitur ini diimplementasikan sebagai ekstensi Chrome bawaan yang tidak bisa dinonaktifkan dan tidak muncul di panel ekstensi, dan fungsi yang sama juga tersedia di Microsoft Edge dan Brave hanya untuk domain
*.google.com
Informasi yang Diekspos oleh API Khusus *.google.com
- Chrome menyediakan informasi status sistem dan data yang mendekati debugging hanya untuk situs
*.google.com- Penggunaan CPU sistem dan tab
- Penggunaan GPU
- Penggunaan memori
- Informasi prosesor terperinci
- Backchannel logging
- API yang sama tidak diekspos ke situs lain dan hanya dapat digunakan pada domain
*.google.com
Cara Implementasi dan Perilaku Browser Turunan Chromium
- Fitur ini diimplementasikan sebagai ekstensi Chrome bawaan yang tidak bisa dinonaktifkan dan tidak ditampilkan di panel ekstensi
- Kode sumbernya ada di jalur Chromium
hangout_services - Awalnya tidak jelas apakah ekstensi yang sama juga disertakan di browser turunan Chromium lain, tetapi pembaruan berikutnya mengonfirmasi perilaku berikut
- Di Microsoft Edge, fitur ini juga tersedia khusus untuk domain
*.google.com - Di Brave, ekstensi yang memungkinkan Google mengambil informasi ini hanya dari
*.google.comjuga telah diprainstal, dan menunjukkan perilaku yang sama seperti Chrome dan Edge
- Di Microsoft Edge, fitur ini juga tersedia khusus untuk domain
Isu Persaingan dan Regulasi
- Jika browser menyediakan informasi sistem hanya untuk domain miliknya sendiri, layanan web lain akan kesulitan mengimplementasikan fitur diagnostik pada tingkat yang sama
- Zoom disebut sebagai contoh yang tidak mendapatkan fitur debugging CPU seperti Google Meet, dan hal ini dapat mengarah pada masalah pengutamaan layanan sendiri oleh vendor browser
- Dari sudut pandang DMA, isu utamanya tetap apakah gatekeeper harus memberikan akses fungsi secara setara kepada semua pihak
1 komentar
Komentar Hacker News
Melihat nama hangout_services, ini tampak seperti hack teknis lama yang bersifat utang teknis, dibuat untuk memudahkan pengembangan Google Hangouts
Sepertinya tujuannya untuk mengalirkan data telemetri langsung ke tim Hangouts. Hangouts adalah aplikasi pertama yang mengimplementasikan panggilan video di browser, dan ini kemudian menjadi WebRTC. Modul ini mengekspos penggunaan CPU/GPU/RAM serta informasi hardware yang sebenarnya tidak bisa dilihat aplikasi. Google kemungkinan akan melihat thread Twitter ini lalu menghapusnya begitu saja. Hangouts sudah menjadi produk mati, dan sekalipun kode sisi server masih menggunakannya, sekarang cakupan penggunaan WebRTC jauh lebih luas, jadi tim Chrome mungkin memantau performa secara langsung dengan pendekatan multisitus
Memang nonstandar, tapi kalau ini aplikasi native, hal semacam ini rasanya sangat mungkin dilakukan
Sepertinya saya bisa sedikit menjelaskan bagian ini. Sebagai catatan, saya mantan karyawan Google
Dulu saya pernah bekerja di GVC, platform konferensi video internal Google. Pada 2010–2011, banyak perangkat konferensi video perusahaan saat itu berupa perangkat proprietary seperti Cisco Tandberg, dan karena mahal, biayanya besar untuk diterapkan di ribuan ruang rapat. Pada periode yang mirip, tim lain sedang mengembangkan Hangouts, dan saya agak lupa apakah saat itu namanya Google Meet atau baru kemudian menjadi demikian. Nama Hangouts sepertinya diadopsi ketika Google+ keluar dan produk itu diintegrasikan ke dalamnya. Konfigurasi GVC bermacam-macam, tetapi yang paling umum adalah kombinasi monitor/komputer All-in-One (AIO), dan itu PC Intel sepenuhnya. Jadi platform GVC adalah distro Linux kustom, dirancang untuk berkomunikasi dengan layanan Google dan mendistribusikan pembaruan software. Mereka juga menyimpan distro lama untuk berjaga-jaga jika boot gagal, dan ada berbagai masalah seperti penamaan perangkat. Dukungan untuk beragam hardware seperti panel sentuh, kamera PTZ besar, dan beberapa mikrofon juga diperlukan. Pada akhirnya Hangouts menjadi stack dasar GVC, menggantikan hampir semua Tandberg dan menghemat banyak uang. Sistem ini setidaknya masih digunakan sampai 2017, setelah itu saya tidak tahu. Pemantauan juga merupakan bagian dari itu, jadi jika terlihat API khusus *.google.com, perlu dilihat dengan tepat. Dari Tweet saja tidak bisa diketahui apakah Google dapat mengkueri semua instance Chrome di seluruh dunia, atau hanya bisa dari google.com. Namun, melihat nama hangouts_services dan pembatasan domain, tampaknya besar kemungkinan ini adalah dukungan pemantauan Chrome tertanam untuk GVC. Bisa saja saya salah
Di Chrome, saya tidak tahu apakah itu CPU yang dipakai Meet atau seluruh sistem, tetapi penggunaan CPU bisa dilihat, dan dalam kedua kasus tampaknya ini bukan sesuatu yang mungkin dilakukan dengan API umum. Saya cek dengan beberapa pekerjaan latar belakang
yes, dan jelas itu seluruh sistem. Tambahan lagi, kebingungan nama memang selalu terjadi, tetapi GVC benar-benar nama yang jelas dan bagusIni bisa dicoba langsung di halaman *.google.com mana pun:
chrome.runtime.sendMessage("nkeimhogjdpnpccoofpliimaahmaaome", {"method":"cpu.getInfo"}, (resp) => { console.log(resp); });API itu tampaknya memang hanya diekspos ke konten yang berjalan di *.google.com, tetapi itu hampir sama dengan “Google bisa mengkueri semua instance Chrome yang mengunjungi situsnya.” Bahkan jika tidak menggunakan layanan Google, Chrome secara default mengambil konten halaman tab baru dari Google, jadi secara praktik mendekati hampir 100%. Saya tidak menganggap ini akan digunakan dengan niat jahat, tetapi jika Google bisa mendiagnosis masalah dengan cara seperti ini sementara kompetitor di bidang yang sama tidak bisa, itu tetap masalah. Zoom tidak punya API semacam ini, bukan?
Maksudnya, demi mengamati penggunaan CPU pada appliance internal untuk platform konferensi video internal, mereka memasukkan plugin bundel ini ke Google Chrome untuk pengguna umum?
Sekarang sepertinya puluhan manajer produk sedang mendekati tech lead produk mereka dengan kalimat “oke, dengarkan dulu…”
Fitur ini tampaknya ditambahkan pada Oktober 2013: https://github.com/chromium/chromium/commit/422c736b82e7ee76...
Ini adalah commit yang membundel ekstensi Hangouts Services ke Chrome. BUG=291271, URL review: https://codereview.chromium.org/35873003. URL review tersebut adalah https://codereview.chromium.org/35873003
Saya tidak tahu persis API ini apa dan mengapa ada, tetapi Firefox juga melakukan hal serupa
Ada API khusus yang hanya bisa digunakan di domain Mozilla dan Firefox, seperti untuk membantu pemasangan ekstensi atau pengalaman saat pertama kali dijalankan. Kurang dari 12 bulan lalu ada artikel blog terkait yang naik di Hacker News, tetapi sulit ditemukan
API-nya terbuka dan terdokumentasi, dan daftar domain yang diizinkan juga ada di UI serta about:config. Versi Android Play Store adalah pengecualian karena menyembunyikan semuanya, entah apakah tujuannya membuat browser itu menjadi sampah total. Dan jika Anda membawa use case yang bagus lalu meminta dengan sopan di Bugzilla, para pengembang sepertinya setidaknya akan mempertimbangkan untuk menambahkan domain default
Itu memanfaatkan monopoli di satu pasar, yakni browser, untuk mendapatkan keuntungan di pasar lain, yakni konferensi video, sehingga mungkin melanggar hukum antimonopoli
Di antara browser, ini cara yang cukup standar. Tingkat risikonya seharusnya mirip dengan jika seseorang memalsukan domain tempat browser mengunduh pembaruan perangkat lunak, dan jika benar-benar tidak suka, Anda bisa mematikannya di preferensi
[0] https://news.ycombinator.com/item?id=40631439
Sebagai catatan, saya bekerja di Google, tetapi bukan penanggung jawab Chrome atau API ini
Menurut saya penjelasannya cukup biasa. Misalnya, jika Anda membuka Google Meet, memulai rapat kosong, yaitu “rapat instan”, lalu menekan “Pemecahan masalah & bantuan” di menu “...”, Anda akan melihat berbagai grafik statistik termasuk penggunaan CPU. Sepertinya saat mesin terbebani selama panggilan Meet, Meet juga dengan ramah menyarankan agar Anda menutup tab. Cukup berguna, jadi kadang saya memeriksanya. Dipikir-pikir lagi, saya tidak yakin apakah saran untuk menutup tab itu benar-benar ada; yang benar-benar pernah saya gunakan hanya layar statistiknya
Pengguna Meet mendapat panduan mengapa rapat tidak berjalan dengan baik, tetapi jika Zoom, Teams, dan Slack tidak bisa melakukan hal yang sama, pengalaman pengguna Meet pasti menjadi lebih baik. Tidak heran semua layanan rapat lain sangat mendorong penggunaan aplikasi desktop. Aplikasi desktop Google Meet pada dasarnya adalah Chrome
Mungkin ini salah satu alasan Meet berjalan baik di browser sementara Zoom tidak, sehingga terutama ketika peserta rapat banyak, pengguna Zoom akhirnya memakai aplikasi native jika menginginkan performa yang layak
Terima kasih kepada karyawan Google yang mengatakan langsung bagian yang seharusnya dilewatkan diam-diam
Sepertinya judul kiriman sedikit keliru saat diubah dari judul asli. Sejauh yang saya pahami, begini
Chrome memiliki ekstensi bawaan yang menggunakan Chrome API publik yang juga mudah dipakai oleh ekstensi Chrome lain. Masalahnya adalah ekstensi ini membagikan informasi tersebut saat berkomunikasi dengan domain milik Google sendiri, tetapi situs web lain tidak bisa melakukannya. Tidak ada “API tersembunyi khusus”
“Tersembunyi” berarti ekstensi itu tidak terlihat dalam daftar meskipun Anda membuka chrome://extensions. Dan seperti sudah dikatakan, itu juga Chrome API
chrome.runtime.sendMessage( 'nkeimhogjdpnpccoofpliimaahmaaome', { method: 'cpu.getInfo' }, response => { console.log('CPU Info:\n', JSON.stringify(response, null, 2)); } );Akan aneh jika kode browser yang diimplementasikan sebagai PWA harus meminta izin terpisah untuk mengakses informasi sistem, karena itu memang bagian dari fungsi browser itu sendiri. Penggunaan lain dari API nonpublik yang sudah lama ada adalah mengintegrasikan situs web khusus Google yang menyediakan fungsi inti, seperti Chrome Web Store, dengan browser Chrome agar halaman web dapat mengizinkan pemasangan dan penghapusan ekstensi
Ini tampaknya memakai API chrome.system.cpu, yang bisa diakses ekstensi apa pun jika memiliki izin
"system.cpu"https://developer.chrome.com/docs/extensions/reference/api/s...
Semua izin yang diminta ekstensi ini bisa dilihat di sini:
https://source.chromium.org/chromium/chromium/src/+/main:chr...
Aplikasi konferensi video lain tidak punya akses seperti ini kecuali pengguna melewati langkah besar untuk memasang ekstensi terpisah secara manual
Tidak terlalu mengejutkan. Ini sangat khas Google. Pertanyaannya, apakah ini juga ada di browser Chromium lain. Bagaimana dengan Edge, Brave, Chromium, Ungoogled Chromium?
"google"untuk menghindari hal seperti iniJika dicoba di Firefox, muncul pesan “untuk melihat penggunaan CPU, coba gunakan Google Chrome”
Safari juga punya fitur khusus Apple. Misalnya, saat login ke situs web lain dengan akun Apple, Safari bisa menampilkan dialog khusus yang berperilaku berbeda dari passkey atau autofill kata sandi
Browser lain diarahkan melalui alur berbasis redirect. Saya selalu penasaran bagaimana ini diimplementasikan di JavaScript. Apakah semacam WebAuthn dengan argumen proprieter?
Google pernah melakukan hal seperti ini sebelumnya. Detailnya agak kabur, tetapi sepertinya Native Client dibuat hanya berfungsi di Hangouts melalui allowlist tingkat domain, atau semacam itu