Google Chrome bietet eine API, die nur auf *.google.com zugänglich ist
(twitter.com/lcasdev)- Google Chrome bietet eine API, die nur auf Websites unter
*.google.comZugriff auf System-/Tab-CPU-Auslastung, GPU-Auslastung, Speichernutzung, detaillierte Prozessorinformationen und einen Logging-Backchannel erlaubt - Auf anderen Websites ist dieselbe API nicht verfügbar, was die Frage aufwirft, ob ein Browser-Anbieter seiner eigenen Website Sonderrechte einräumen darf
- Der DMA schreibt die Idee gesetzlich fest, dass Browser-Anbieter als Internet-Gatekeeper allen dieselben Funktionen bereitstellen müssen; je nach Auslegung könnte die Offenlegung zusätzlicher Informationen nur für Google-Eigenschaften einen Verstoß gegen den DMA darstellen
- Zoom könnte im Wettbewerb benachteiligt sein, weil es nicht dieselben CPU-Debugging-Funktionen wie Google Meet erhält
- Die Funktion ist als integrierte Chrome-Erweiterung implementiert, die sich nicht deaktivieren lässt und auch nicht im Erweiterungs-Panel erscheint; dieselbe Funktion wird in Microsoft Edge und Brave ebenfalls nur für die Domain
*.google.combereitgestellt
Welche Informationen die API nur für *.google.com offenlegt
- Chrome stellt nur Websites unter
*.google.comsystemnahe Status- und nahezu debuggingrelevante Informationen bereit- CPU-Auslastung des Systems und des Tabs
- GPU-Auslastung
- Speichernutzung
- Detaillierte Prozessorinformationen
- Logging-Backchannel
- Dieselbe API wird anderen Websites nicht offengelegt und ist nur auf der Domain
*.google.comnutzbar
Implementierung und Verhalten in Chromium-basierten Browsern
- Die Funktion ist als integrierte Chrome-Erweiterung umgesetzt, die sich nicht deaktivieren lässt und auch nicht im Erweiterungs-Panel angezeigt wird
- Der Quellcode befindet sich im Chromium-Pfad
hangout_services - Zunächst war unklar, ob dieselbe Erweiterung auch in anderen Chromium-basierten Browsern enthalten ist, doch ein späteres Update bestätigte folgendes Verhalten
- Auch in Microsoft Edge ist diese Funktion ausschließlich für die Domain
*.google.comverfügbar - In Brave ist ebenfalls eine Erweiterung vorinstalliert, die Google erlaubt, diese Informationen nur auf
*.google.comabzurufen; das Verhalten entspricht damit Chrome und Edge
- Auch in Microsoft Edge ist diese Funktion ausschließlich für die Domain
Wettbewerbs- und Regulierungsfragen
- Wenn ein Browser Systeminformationen nur für bestimmte eigene Domains bereitstellt, können andere Webdienste Diagnosefunktionen auf demselben Niveau nur schwer umsetzen
- Als Beispiel wird Zoom genannt, das nicht dieselben CPU-Debugging-Funktionen wie Google Meet erhält; dies könnte auf eine Bevorzugung eigener Dienste durch den Browser-Anbieter hinauslaufen
- Aus DMA-Sicht bleibt die zentrale Frage, ob Gatekeeper den Zugang zu Funktionen gleichwertig für alle bereitstellen müssen
1 Kommentare
Meinungen auf Hacker News
Der Name hangout_services sieht nach einem alten technischen Schulden-Hack aus, der die Entwicklung von Google Hangouts erleichtern sollte.
Vermutlich war er dazu gedacht, Telemetriedaten direkt an das Hangouts-Team durchzureichen. Hangouts war die erste App, die Videoanrufe im Browser umgesetzt hat, und daraus wurde später WebRTC. Dieses Modul legt CPU-/GPU-/RAM-Auslastung und Hardwareinformationen offen, die eine App normalerweise nicht sehen kann. Google wird diesen Twitter-Thread vermutlich sehen und es einfach entfernen. Hangouts ist längst ein totes Produkt, und selbst wenn serverseitiger Code es noch nutzt, ist WebRTC heute viel breiter im Einsatz; das Chrome-Team dürfte die Performance daher direkt über mehrere Sites hinweg überwachen.
Es ist zwar nicht standardisiert, aber eine native App würde so etwas durchaus tun.
Dazu kann ich vielleicht etwas erklären. Zur Einordnung: Ich bin ehemaliger Google-Mitarbeiter.
Ich habe einmal an GVC, der internen Videokonferenzplattform von Google, gearbeitet. Um 2010–2011 herum bestand ein großer Teil der Videokonferenztechnik des Unternehmens aus proprietären Geräten wie Cisco Tandberg; sie waren teuer, und der Rollout in Tausende Konferenzräume kostete entsprechend viel. Etwa zur gleichen Zeit entwickelte ein anderes Team Hangouts; ich erinnere mich nicht mehr genau, ob es damals schon Google Meet hieß oder erst später so genannt wurde. Der Name Hangouts wurde, glaube ich, übernommen, als es mit dem Erscheinen von Google+ in das Produkt integriert wurde. Es gab verschiedene GVC-Konfigurationen, aber die häufigste war eine All-in-One(AIO)-Monitor-/Computer-Kombination, also ein vollwertiger Intel-PC. Deshalb war die GVC-Plattform eine angepasste Linux-Distribution, die dafür ausgelegt war, mit Google-Diensten zu kommunizieren und Softwareupdates auszurollen. Für den Fall von Boot-Fehlern wurde auch eine ältere Distribution vorgehalten, und es gab diverse Themen wie die Benennung der Geräte. Außerdem mussten unterschiedliche Hardwarekomponenten unterstützt werden, etwa Touchpanels, große PTZ-Kameras und mehrere Mikrofone. Am Ende wurde Hangouts zum Basis-Stack von GVC und ersetzte fast alle Tandberg-Systeme, was eine Menge Geld sparte. Dieses System war definitiv bis 2017 im Einsatz; danach weiß ich es nicht. Monitoring gehörte ebenfalls dazu. Wenn also eine API nur für *.google.com auftaucht, muss man genau hinschauen. Ob Google alle Chrome-Instanzen weltweit abfragen kann oder ob das nur auf google.com möglich ist, lässt sich allein aus dem Tweet nicht erkennen. Angesichts des Namens hangouts_services und der Domain-Beschränkung wirkt es aber sehr wahrscheinlich, dass es sich um Monitoring-Unterstützung für ein eingebettetes Chrome in GVC handelt. Ich kann mich natürlich irren.
In Chrome kann man die CPU-Auslastung sehen, wobei ich nicht weiß, ob es die von Meet oder die des gesamten Systems ist; so oder so scheint das nicht über eine normale API möglich zu sein. Mit ein paar
yes-Hintergrundjobs habe ich es geprüft: Es ist eindeutig das ganze System. Nebenbei: Namensverwirrung gibt es immer, aber GVC ist wirklich ein klarer und guter Name.Man kann es direkt auf jeder beliebigen *.google.com-Seite ausprobieren:
chrome.runtime.sendMessage("nkeimhogjdpnpccoofpliimaahmaaome", {"method":"cpu.getInfo"}, (resp) => { console.log(resp); });Die API scheint zwar nur für Inhalte offengelegt zu werden, die auf *.google.com laufen, aber das ist praktisch fast dasselbe wie „Google kann alle Chrome-Instanzen abfragen, die seine Site besuchen“. Selbst wenn man keine Google-Dienste nutzt, lädt Chrome standardmäßig Inhalte für die Neuer-Tab-Seite von Google, also liegt das faktisch nahe bei 100 %. Ich glaube nicht, dass es böswillig genutzt wird, aber wenn Google auf diese Weise Probleme diagnostizieren kann und Wettbewerber im selben Bereich nicht, bleibt es trotzdem ein Problem. Zoom hat so eine API doch nicht, oder?
Soll das heißen, dass man dieses gebündelte Plugin in Google Chrome für normale Nutzer eingebaut hat, um auf internen Appliances einer internen Videokonferenzplattform die CPU-Auslastung zu beobachten?
Jetzt gehen vermutlich Dutzende Produktmanager zu den Tech Leads ihrer Produkte und sagen: „Also, hört erst mal zu …“
Diese Funktion scheint im Oktober 2013 hinzugefügt worden zu sein: https://github.com/chromium/chromium/commit/422c736b82e7ee76...
Es ist ein Commit, der die Hangouts-Services-Erweiterung in Chrome bündelt. BUG=291271, Review-URL: https://codereview.chromium.org/35873003. Die betreffende Review-URL lautet https://codereview.chromium.org/35873003.
Ich weiß nicht genau, was diese API ist und warum es sie gibt, aber Firefox macht etwas Ähnliches.
Es gibt spezielle APIs, die nur auf Mozilla- und Firefox-Domains genutzt werden können, etwa zur Unterstützung bei der Installation von Erweiterungen oder beim First-Run-Erlebnis. Vor weniger als 12 Monaten gab es dazu einen Blogbeitrag auf Hacker News, aber er ist schwer zu finden.
Die APIs sind öffentlich und dokumentiert, und die Domain-Allowlist ist sowohl in der UI als auch in about:config enthalten. Die Android-Play-Store-Version ist eine Ausnahme, weil dort alles versteckt ist – als wolle man den Browser zu reinem Müll machen. Und wenn man in Bugzilla mit einem guten Use Case höflich anfragt, würden die Entwickler vermutlich zumindest prüfen, ob sie eine Standard-Domain hinzufügen.
Das könnte ein Verstoß gegen das Kartellrecht sein, weil Google seine Monopolstellung in einem Markt, nämlich Browsern, nutzt, um sich in einem anderen Markt, Videokonferenzen, einen Vorteil zu verschaffen.
Unter Browsern ist das eine ziemlich übliche Praxis. Das Risiko sollte in etwa dem entsprechen, dass jemand die Domain fälscht, von der der Browser Software-Updates herunterlädt; und wenn man es wirklich nicht mag, kann man es in den Einstellungen abschalten.
[0] https://news.ycombinator.com/item?id=40631439
Zur Einordnung: Ich arbeite bei Google, aber nicht an Chrome oder dieser API.
Die Erklärung wirkt auf mich ziemlich banal. Wenn man zum Beispiel Google Meet öffnet, ein leeres Meeting, also ein „Sofortmeeting“, startet und dann im „…“-Menü auf „Fehlerbehebung und Hilfe“ klickt, sieht man mehrere Statistikdiagramme, darunter zur CPU-Auslastung. Es scheint auch, als würde Meet während eines Anrufs freundlich vorschlagen, Tabs zu schließen, wenn die Maschine unter Last steht. Das ist ziemlich nützlich, deshalb schaue ich gelegentlich hinein. Wenn ich noch einmal darüber nachdenke, bin ich mir nicht sicher, ob es den Vorschlag zum Schließen von Tabs tatsächlich gibt; tatsächlich genutzt habe ich nur die Statistikansicht.
Meet-Nutzer bekommen Hinweise, warum ein Meeting nicht richtig funktioniert; wenn Zoom, Teams und Slack dasselbe nicht tun können, muss die Nutzungserfahrung von Meet zwangsläufig besser sein. Kein Wunder, dass alle anderen Konferenzdienste ihre Desktop-Apps so aggressiv pushen. Die Desktop-App von Google Meet ist im Grunde Chrome.
Vielleicht ist das einer der Gründe, warum Meet im Browser gut funktioniert und Zoom nicht, sodass Zoom-Nutzer, die ordentliche Performance wollen, besonders bei vielen Teilnehmern, zur nativen App greifen.
Danke, dass ein Google-Mitarbeiter den Punkt ausspricht, über den man sonst stillschweigend hinweggehen würde.
Beim Ändern des Einreichungstitels gegenüber dem Original scheint etwas schiefgelaufen zu sein. Nach meinem Verständnis ist es so:
Chrome hat eine eingebaute Erweiterung, die eine öffentliche Chrome-API nutzt, die auch andere Chrome-Erweiterungen leicht verwenden können. Das Problem ist, dass diese Erweiterung diese Informationen teilt, wenn sie mit Googles eigenen Domains kommuniziert, andere Websites das aber nicht können. Es gibt keine „spezielle versteckte API“.
„Versteckt“ bedeutet, dass sie auch unter chrome://extensions nicht in der Liste erscheint. Und wie bereits gesagt: Es ist auch eine Chrome-API.
chrome.runtime.sendMessage( 'nkeimhogjdpnpccoofpliimaahmaaome', { method: 'cpu.getInfo' }, response => { console.log('CPU Info:\n', JSON.stringify(response, null, 2)); } );Es wäre seltsam, wenn als PWA implementierter Browsercode eine separate Berechtigung anfordern müsste, um auf Systeminformationen zuzugreifen. Er ist schließlich Teil der Browserfunktion selbst. Eine weitere Verwendung schon lange existierender nicht öffentlicher APIs ist die Integration exklusiver Google-Websites, die Kernfunktionen bereitstellen, wie des Chrome Web Store, mit dem Chrome-Browser, sodass Webseiten die Installation und Entfernung von Erweiterungen erlauben können.
Das scheint die chrome.system.cpu-API zu verwenden, auf die jede Erweiterung zugreifen kann, wenn sie die Berechtigung
"system.cpu"hathttps://developer.chrome.com/docs/extensions/reference/api/s...
Alle Berechtigungen, die diese Erweiterung anfordert, sind hier zu sehen:
https://source.chromium.org/chromium/chromium/src/+/main:chr...
Andere Videokonferenz-Apps haben diese Zugriffsrechte nicht, es sei denn, der Nutzer geht den großen zusätzlichen Schritt und installiert manuell eine separate Erweiterung
Nicht besonders überraschend. Sehr Google-typisch. Die Frage ist, ob das auch in anderen Chromium-Browsern steckt. Wie sieht es mit Edge, Brave, Chromium, Ungoogled Chromium aus?
"google"vorkommt, um genau so etwas zu vermeidenWenn man es in Firefox versucht, heißt es: „Um die CPU-Auslastung zu sehen, verwenden Sie Google Chrome“
Auch Safari hat Apple-spezifische Funktionen. Wenn man sich zum Beispiel mit einem Apple-Konto auf anderen Websites anmeldet, kann es einen speziellen Dialog anzeigen, der anders funktioniert als Passkeys oder das automatische Ausfüllen von Passwörtern
Andere Browser müssen einen redirect-basierten Ablauf verwenden. Ich habe mich immer gefragt, wie das in JavaScript implementiert ist. Ist das so etwas wie WebAuthn mit proprietären Argumenten?
Google hat so etwas auch früher schon gemacht. Die Details sind verschwommen, aber ich glaube, Native Client war über eine Allowlist auf Domainebene so eingerichtet, dass es nur in Hangouts funktionierte, oder etwas in der Art