Google Chrome ofrece una API accesible solo desde `*.google.com`
(twitter.com/lcasdev)- Google Chrome ofrece una API que permite acceso solo a sitios
*.google.comal uso de CPU del sistema y de la pestaña, uso de GPU, uso de memoria, información detallada del procesador y acceso a un canal de registro de retorno - La misma API no está expuesta a otros sitios, lo que genera controversia sobre si un proveedor de navegador puede otorgar privilegios especiales a su propio sitio web
- La DMA convierte en ley la idea de que los proveedores de navegadores, como guardianes de acceso de internet, deben ofrecer las mismas funciones a todos, y según la interpretación, exponer información adicional solo a propiedades de Google podría constituir una violación de la DMA
- Zoom podría quedar en desventaja competitiva al no recibir las mismas funciones de depuración de CPU que Google Meet
- Esta función está implementada como una extensión integrada de Chrome que no se puede desactivar y tampoco aparece en el panel de extensiones; la misma función también se ofrece solo al dominio
*.google.comen Microsoft Edge y Brave
Información que expone la API exclusiva de *.google.com
- Chrome ofrece información del estado del sistema y cercana a depuración solo a sitios
*.google.com- Uso de CPU del sistema y de la pestaña
- Uso de GPU
- Uso de memoria
- Información detallada del procesador
- Canal de registro de retorno
- La misma API no está expuesta a otros sitios y solo puede usarse en el dominio
*.google.com
Forma de implementación y comportamiento en navegadores derivados de Chromium
- Esta función está implementada como una extensión integrada de Chrome que no se puede desactivar y tampoco se muestra en el panel de extensiones
- El código fuente está en la ruta
hangout_servicesde Chromium - No estaba claro si la misma extensión también estaba incluida en otros navegadores derivados de Chromium, pero en una actualización posterior se confirmó el siguiente comportamiento
- En Microsoft Edge, esta función también se ofrece solo para el dominio
*.google.com - En Brave también viene preinstalada una extensión que permite a Google obtener esta información solo desde
*.google.com, y muestra el mismo comportamiento que Chrome y Edge
- En Microsoft Edge, esta función también se ofrece solo para el dominio
Cuestiones de competencia y regulación
- Si un navegador ofrece información del sistema solo a determinados dominios propios, a otros servicios web les resulta difícil implementar funciones de diagnóstico del mismo nivel
- Se menciona a Zoom como un caso que no recibe las mismas funciones de depuración de CPU que Google Meet, lo que puede derivar en un problema de trato preferencial a servicios propios por parte del proveedor del navegador
- Desde la perspectiva de la DMA, sigue en pie como cuestión central si un guardián de acceso debe ofrecer un acceso equivalente a las funciones
1 comentarios
Opiniones de Hacker News
Por el nombre hangout_services, parece un hack antiguo de deuda técnica creado para facilitar el desarrollo de Google Hangouts.
Probablemente servía para pasar datos de telemetría directamente al equipo de Hangouts. Hangouts fue la primera app en implementar videollamadas en el navegador, y eso después se convirtió en WebRTC. Este módulo expone uso de CPU/GPU/RAM e información de hardware que una app normalmente no podría ver. Creo que Google verá este hilo de Twitter y simplemente lo eliminará. Hangouts ya es un producto muerto y, aunque el código del lado del servidor todavía lo use, hoy WebRTC tiene un alcance mucho más amplio, así que el equipo de Chrome seguramente monitorea el rendimiento directamente con un enfoque multisitio.
Aunque no sea estándar, es algo que una app nativa perfectamente podría hacer.
Creo que puedo explicar un poco esta parte. Como referencia, soy exempleado de Google.
En su momento trabajé en GVC, la plataforma interna de videoconferencias de Google. Alrededor de 2010-2011, muchos de los equipos de videoconferencia de la empresa eran dispositivos propietarios como Cisco Tandberg, y eran caros, así que desplegarlos en miles de salas de reuniones costaba mucho. Más o menos por la misma época, otro equipo estaba desarrollando Hangouts; no recuerdo bien si en ese entonces se llamaba Google Meet o si tomó ese nombre después. Creo que el nombre Hangouts se adoptó cuando se integró al producto con la llegada de Google+. Había varias configuraciones de GVC, pero la más común era una combinación de monitor/computadora All-in-One (AIO), y era una PC Intel completa. Por eso la plataforma GVC era una distribución Linux personalizada, diseñada para comunicarse con servicios de Google y distribuir actualizaciones de software. También manteníamos una distribución antigua por si fallaba el arranque, y había varios problemas como la asignación de nombres a los equipos. También necesitábamos soporte para hardware diverso, como paneles táctiles, cámaras PTZ grandes y varios micrófonos. Al final, Hangouts se convirtió en la pila base de GVC y reemplazó casi todos los Tandberg, ahorrando muchísimo dinero. Sé con certeza que este sistema se usaba hasta 2017; después no lo sé. El monitoreo también era parte de eso, así que si se ve una API exclusiva para *.google.com, hay que mirarlo con precisión. Solo por el Tweet no se puede saber si Google puede consultar todas las instancias de Chrome del mundo, o si solo es posible desde google.com. Pero por el nombre hangouts_services y la restricción de dominio, parece muy probable que sea soporte de monitoreo de Chrome embebido para GVC. Podría estar equivocado.
En Chrome se puede ver el uso de CPU, aunque no sé si es el de Meet o el de todo el sistema; en cualquier caso, no parece algo posible con una API normal. Lo comprobé con algunas tareas
yesen segundo plano y definitivamente es de todo el sistema. Además, siempre hay confusiones con los nombres, pero GVC es un nombre realmente claro y bueno.Se puede probar directamente en cualquier página *.google.com:
chrome.runtime.sendMessage("nkeimhogjdpnpccoofpliimaahmaaome", {"method":"cpu.getInfo"}, (resp) => { console.log(resp); });La API parece estar expuesta solo al contenido que se ejecuta en *.google.com, pero aun así eso es casi lo mismo que “Google puede consultar todas las instancias de Chrome que visitan sus sitios”. Incluso si no usas servicios de Google, Chrome por defecto obtiene de Google el contenido de la página de nueva pestaña, así que en la práctica se acerca al 100%. No creo que se use con mala intención, pero si Google puede diagnosticar problemas de esta forma y sus competidores en el mismo rubro no, sigue siendo un problema. Zoom no tiene una API así, ¿no?
¿O sea que para observar el uso de CPU en un appliance interno de una plataforma interna de videoconferencias, metieron este plugin incluido en Google Chrome para usuarios comunes?
Me imagino a decenas de gerentes de producto acercándose ahora a los tech leads de sus productos con un “bueno, primero escúchame…”.
Esta función parece haberse agregado en octubre de 2013: https://github.com/chromium/chromium/commit/422c736b82e7ee76...
Es un commit que incluye en Chrome la extensión Hangouts Services. BUG=291271, URL de revisión: https://codereview.chromium.org/35873003. La URL de esa revisión es https://codereview.chromium.org/35873003.
No sé exactamente qué es esta API ni por qué existe, pero Firefox hace algo parecido.
Tiene API especiales que solo se pueden usar en dominios de Mozilla y Firefox, como para ayudar con la instalación de extensiones o la experiencia del primer inicio. Hace menos de 12 meses se publicó en Hacker News una entrada de blog relacionada, pero cuesta encontrarla.
La API es pública y está documentada, y la lista de dominios permitidos también está en la UI y en about:config. La versión de Android Play Store es la excepción, porque esconde todo, como si quisieran convertir el navegador en pura basura. Además, si llevas un buen caso de uso y lo pides con respeto en Bugzilla, creo que los desarrolladores al menos considerarían agregar dominios predeterminados.
Como usa su monopolio en un mercado, el de los navegadores, para obtener ventaja en otro mercado, el de las videoconferencias, podría ser una violación de las leyes antimonopolio.
Es una práctica bastante estándar entre los navegadores. El nivel de riesgo debería ser similar al de que alguien falsifique el dominio desde el que el navegador descarga actualizaciones de software, y si de verdad te molesta, puedes desactivarlo en las preferencias.
[0] https://news.ycombinator.com/item?id=40631439
Como referencia, trabajo en Google, pero no en Chrome ni en esta API.
La explicación me parece bastante normal. Por ejemplo, si abres Google Meet, inicias una reunión vacía, es decir, una “reunión instantánea”, y luego en el menú “…” haces clic en “Solución de problemas y ayuda”, aparecen varias gráficas de estadísticas, incluido el uso de CPU. También parece que, si la máquina está bajo carga durante una llamada de Meet, te sugiere amablemente cerrar pestañas. Es bastante útil y lo reviso de vez en cuando. Pensándolo de nuevo, no estoy seguro de que realmente exista la sugerencia de cerrar pestañas; lo que sí he usado es la pantalla de estadísticas.
Si los usuarios de Meet reciben orientación sobre por qué una reunión no funciona bien, pero Zoom, Teams y Slack no pueden hacer lo mismo, la experiencia de uso de Meet inevitablemente será mejor. No sorprende que todos los demás servicios de reuniones insistan tanto en usar sus apps de escritorio. La app de escritorio de Google Meet es, básicamente, Chrome.
Tal vez esa sea una de las razones por las que Meet funciona bien en el navegador y Zoom no, y por la que, especialmente cuando hay muchos participantes en una reunión, los usuarios de Zoom terminan usando la app nativa si quieren un rendimiento adecuado.
Gracias por decir directamente la parte que un empleado de Google normalmente dejaría pasar en silencio.
Creo que al cambiar el título del envío respecto del original se tergiversó un poco. Según lo entiendo, es esto:
Chrome tiene una extensión integrada que usa API públicas de Chrome que otras extensiones de Chrome también pueden usar fácilmente. El problema es que esta extensión comparte esa información cuando se comunica con los propios dominios de Google, pero otros sitios web no pueden hacerlo. No hay ninguna “API oculta especial”.
“Oculta” significa que no aparece en la lista aunque vayas a chrome://extensions. Y, como ya se dijo, también es una API de Chrome.
chrome.runtime.sendMessage( 'nkeimhogjdpnpccoofpliimaahmaaome', { method: 'cpu.getInfo' }, response => { console.log('CPU Info:\n', JSON.stringify(response, null, 2)); } );Sería raro que código del navegador implementado como PWA tuviera que pedir permisos separados para acceder a información del sistema, porque forma parte de la propia funcionalidad del navegador. Otro uso de una API privada que existe desde hace mucho es integrar el navegador Chrome con sitios web exclusivos de Google que proporcionan funciones esenciales, como Chrome Web Store, permitiendo instalar y desinstalar extensiones desde una página web.
Esto parece usar la API chrome.system.cpu, a la que cualquier extensión puede acceder si tiene el permiso
"system.cpu"https://developer.chrome.com/docs/extensions/reference/api/s...
Todos los permisos que solicita esta extensión se pueden ver aquí:
https://source.chromium.org/chromium/chromium/src/+/main:chr...
Otras apps de videoconferencia no tienen ese acceso a menos que el usuario pase por el gran paso de instalar manualmente una extensión aparte
No sorprende mucho. Es un comportamiento muy de Google. La cuestión es si esto también está en otros navegadores Chromium. ¿Qué pasa con Edge, Brave, Chromium y Ungoogled Chromium?
"google"Si lo intentas en Firefox, dice “para ver el uso de CPU, prueba usar Google Chrome”
Safari también tiene funciones exclusivas de Apple. Por ejemplo, al iniciar sesión en otros sitios web con una cuenta de Apple, puede mostrar un cuadro de diálogo especial que funciona distinto del autocompletado de passkeys o contraseñas
En otros navegadores te manda por un flujo basado en redirecciones. Siempre me dio curiosidad cómo está implementado eso en JavaScript. ¿Será algo como WebAuthn con argumentos propios?
Google ya ha hecho algo así antes. Los detalles los tengo algo borrosos, pero creo que Native Client estaba configurado para funcionar solo en Hangouts mediante una lista de permitidos a nivel de dominio, o algo por el estilo