Google Chrome, yalnızca *.google.com üzerinden erişilebilen API sunuyor
(twitter.com/lcasdev)- Google Chrome, yalnızca
*.google.comsitelerine sistem/sekme CPU kullanımı, GPU kullanımı, bellek kullanımı, ayrıntılı işlemci bilgileri ve günlükleme arka kanalına erişim sağlayan bir API sunuyor - Aynı API diğer sitelere açılmadığı için, tarayıcı üreticisinin kendi web sitelerine özel ayrıcalıklar verip veremeyeceği tartışma konusu oldu
- DMA, internet bekçisi konumundaki tarayıcı üreticilerinin herkese aynı işlevleri sunması gerektiği fikrini yasaya döküyor; yoruma bağlı olarak yalnızca Google mülklerine ek bilgi açılması DMA ihlali sayılabilir
- Zoom, Google Meet’teki gibi CPU hata ayıklama işlevlerine erişemediği için rekabette dezavantajlı konuma düşebilir
- Bu özellik devre dışı bırakılamayan ve uzantılar panelinde de görünmeyen yerleşik bir Chrome uzantısı olarak uygulanıyor; Microsoft Edge ve Brave’de de aynı işlev yalnızca
*.google.comalan adı için sunuluyor
*.google.com için özel API’nin açığa çıkardığı bilgiler
- Chrome, yalnızca
*.google.comsitelerine sistem durumu ve hata ayıklamaya yakın bilgiler sağlıyor- Sistem ve sekmenin CPU kullanımı
- GPU kullanımı
- Bellek kullanımı
- Ayrıntılı işlemci bilgileri
- Günlükleme arka kanalı
- Aynı API diğer sitelere açılmıyor ve yalnızca
*.google.comalan adında kullanılabiliyor
Uygulama biçimi ve Chromium türevi tarayıcılardaki davranış
- Bu özellik, devre dışı bırakılamayan ve uzantılar panelinde gösterilmeyen yerleşik bir Chrome uzantısı olarak uygulanıyor
- Kaynak kodu, Chromium’daki
hangout_servicesyolunda bulunuyor - Aynı uzantının diğer Chromium türevi tarayıcılarda da yer alıp almadığı başlangıçta belirsizdi, ancak sonraki güncellemede şu davranış doğrulandı
- Microsoft Edge’de de bu özellik yalnızca
*.google.comalan adı için sunuluyor - Brave’de de Google’ın bu bilgileri yalnızca
*.google.comüzerinden almasına izin veren bir uzantı önceden yüklü geliyor ve Chrome ile Edge’dekiyle aynı davranışı gösteriyor
- Microsoft Edge’de de bu özellik yalnızca
Rekabet ve düzenleme tartışmaları
- Bir tarayıcı yalnızca kendi belirli alan adlarına sistem bilgisi sağlarsa, diğer web hizmetlerinin aynı düzeyde tanılama işlevleri uygulaması zorlaşır
- Zoom, Google Meet’teki gibi CPU hata ayıklama işlevlerine erişemeyen bir örnek olarak anılıyor; bu da tarayıcı üreticisinin kendi hizmetlerini kayırması sorununa yol açabilir
- DMA açısından, bekçi konumundaki şirketin özellik erişimini eşit şekilde sunması gerekip gerekmediği temel tartışma noktası olmaya devam ediyor
1 yorum
Hacker News yorumları
hangout_services adına bakınca, Google Hangouts geliştirmeyi kolaylaştırmak için yapılmış eski bir teknik borç niteliğinde hack gibi görünüyor.
Muhtemelen telemetri verilerini doğrudan Hangouts ekibine akıtmak için tasarlanmıştı. Hangouts, tarayıcıda görüntülü arama gerçekleştiren ilk uygulamaydı ve bu daha sonra WebRTC’ye dönüştü. Bu modül, uygulamanın normalde göremeyeceği CPU/GPU/RAM kullanımı ve donanım bilgilerini açığa çıkarıyor. Google’ın bu Twitter dizisini görüp bunu doğrudan kaldıracağını düşünüyorum. Hangouts zaten ölmüş bir ürün; sunucu tarafı kod hâlâ kullanıyor olsa bile WebRTC’nin kullanım alanı artık çok daha geniş olduğundan Chrome ekibi performansı çok siteli bir yöntemle doğrudan izliyordur.
Standart dışı olsa da, yerel bir uygulama böyle bir şeyi gayet yapardı.
Bu konu hakkında biraz açıklama yapabilirim sanırım. Not düşeyim, eski bir Google çalışanıyım.
Bir dönem Google’ın dahili video konferans platformu GVC üzerinde çalıştım. 2010–2011 civarında şirketin video konferans ekipmanlarının çoğu Cisco Tandberg gibi tescilli cihazlardı ve pahalı oldukları için binlerce toplantı odasına dağıtmak da maliyetliydi. Benzer dönemde başka bir ekip Hangouts’u geliştiriyordu; o zamanki adının Google Meet mi olduğunu, yoksa sonradan mı öyle olduğunu net hatırlamıyorum. Hangouts adı, Google+ çıkıp ürünle entegre edildiğinde benimsenmiş gibi geliyor. GVC’nin çeşitli yapılandırmaları vardı ama en yaygını All-in-One (AIO) monitör/bilgisayar kombinasyonuydu ve tam teşekküllü bir Intel PC idi. Bu yüzden GVC platformu özel bir Linux dağıtımıydı; Google hizmetleriyle iletişim kurmak ve yazılım güncellemelerini dağıtmak üzere tasarlanmıştı. Önyükleme hatalarına karşı eski bir dağıtımı da saklıyorduk; cihaz adlandırma gibi başka sorunlar da vardı. Dokunmatik paneller, büyük PTZ kameralar, birden fazla mikrofon gibi çeşitli donanımların da desteklenmesi gerekiyordu. Sonunda Hangouts, GVC’nin temel yığını hâline geldi ve neredeyse tüm Tandberg’lerin yerini alarak büyük para tasarrufu sağladı. Bu sistemin 2017’ye kadar kesin olarak kullanıldığını biliyorum; sonrasını bilmiyorum. İzleme de bunun bir parçasıydı, dolayısıyla *.google.com’a özel bir API görülüyorsa tam olarak bakmak gerekir. Google’ın dünyadaki tüm Chrome örneklerini sorgulayıp sorgulayamadığı mı, yoksa bunun yalnızca google.com’da mı mümkün olduğu Tweet’ten anlaşılamıyor. Ancak hangouts_services adı ve alan adı kısıtlaması, GVC için gömülü Chrome izleme desteği olma ihtimalinin yüksek olduğunu düşündürüyor. Yanılıyor olabilirim.
Chrome’da, bunun Meet’in kullandığı CPU mu yoksa sistem geneli mi olduğunu bilmiyorum ama CPU kullanımını görebiliyorsunuz; her iki durumda da bunun genel bir API ile mümkün olmadığı anlaşılıyor. Arka planda birkaç
yesişiyle kontrol ettim; kesinlikle sistem geneli. Ayrıca ad karmaşası hep oluyor ama GVC gerçekten net ve iyi bir ad.Herhangi bir *.google.com sayfasında doğrudan deneyebilirsiniz:
chrome.runtime.sendMessage("nkeimhogjdpnpccoofpliimaahmaaome", {"method":"cpu.getInfo"}, (resp) => { console.log(resp); });API yalnızca *.google.com’da çalışan içeriklere açılıyor gibi görünüyor ama bu yine de neredeyse “Google, kendi sitesini ziyaret eden tüm Chrome örneklerini sorgulayabilir” ile aynı şey. Google hizmetlerini kullanmasanız bile Chrome varsayılan olarak yeni sekme sayfası içeriğini Google’dan aldığı için fiilen neredeyse %100’e yakın. Kötü niyetle kullanılacağını düşünmüyorum ama Google bu şekilde sorunları teşhis edebiliyor ve aynı alandaki rakipleri bunu yapamıyorsa bu hâlâ sorun. Zoom’da böyle bir API yok, değil mi?
Dahili video konferans platformunun dahili appliance’larında CPU kullanımını gözlemlemek için, genel kullanıcıya yönelik Google Chrome’a bu paketlenmiş eklentiyi koydukları mı söyleniyor?
Şimdi onlarca ürün yöneticisi kendi ürünlerinin teknik liderine “Bak, önce bir dinle…” diye yanaşıyordur.
Bu özellik Ekim 2013’te eklenmiş gibi görünüyor: https://github.com/chromium/chromium/commit/422c736b82e7ee76...
Chrome’a Hangouts Services uzantısını paket olarak ekleyen commit. BUG=291271, inceleme URL’si: https://codereview.chromium.org/35873003. İlgili inceleme URL’si https://codereview.chromium.org/35873003.
Bu API’nin tam olarak ne olduğunu ve neden var olduğunu bilmiyorum ama Firefox da benzer bir şey yapıyor.
Uzantı kurulumu ya da ilk çalıştırma deneyimine yardımcı olmak gibi, yalnızca Mozilla ve Firefox alan adlarında kullanılabilen özel API’ler var. 12 aydan kısa süre önce bununla ilgili bir blog yazısı Hacker News’e düşmüştü ama bulmak zor.
API açık ve belgelenmiş; alan adı izin listesi de UI’da ve about:config içinde yer alıyor. Android Play Store sürümü istisna; tarayıcıyı düpedüz çöp hâline getirmek istiyorlar herhâlde, her şeyi gizlemişler. Ayrıca iyi bir kullanım örneğiyle Bugzilla’da nazikçe talep ederseniz geliştiriciler varsayılan alan adının eklenmesini en azından değerlendirecek gibi görünüyor.
Bir pazardaki, yani tarayıcıdaki tekelini kullanarak başka bir pazarda, video konferansta avantaj elde ettiği için bu antitröst yasalarını ihlal ediyor olabilir.
Tarayıcılar arasında epey standart bir yaklaşım. Riski, birinin tarayıcının yazılım güncellemelerini indirdiği alan adını sahtelemesiyle benzer düzeyde olmalı; gerçekten sevmiyorsanız tercihlerden kapatabilirsiniz.
[0] https://news.ycombinator.com/item?id=40631439
Not olarak, Google’da çalışıyorum ama Chrome’dan ya da bu API’den sorumlu değilim.
Açıklamanın oldukça sıradan olduğunu düşünüyorum. Örneğin Google Meet’i açıp boş bir toplantı, yani “anlık toplantı” başlattıktan sonra “…” menüsünden “Sorun giderme ve yardım”a tıklayınca CPU kullanımı da dahil çeşitli istatistik grafiklerini görüyorsunuz. Meet görüşmesi sırasında makine yük altındaysa sekmeleri kapatmanızı da nazikçe öneriyor gibi. Oldukça faydalı olduğu için ara sıra kontrol ediyorum. Yeniden düşününce, sekme kapatma önerisinin gerçekten olup olmadığından emin değilim; fiilen kullandığım şey yalnızca istatistik ekranı.
Meet kullanıcılarına toplantının neden düzgün çalışmadığı konusunda yol gösterilirken Zoom, Teams, Slack aynı şeyi yapamıyorsa Meet’in kullanıcı deneyimi kaçınılmaz olarak daha iyi olur. Diğer tüm toplantı servislerinin masaüstü uygulamalarını aktif biçimde dayatması da şaşırtıcı değil. Google Meet’in masaüstü uygulaması zaten Chrome.
Belki de Meet’in tarayıcıda iyi çalışıp Zoom’un çalışmamasının ve özellikle katılımcı sayısı yüksekken Zoom kullanıcılarının düzgün performans istediklerinde native uygulamayı kullanmaya yönelmesinin nedenlerinden biri budur.
Bir Google çalışanının sessizce geçiştirilecek kısmı doğrudan söylediği için teşekkürler.
Gönderi başlığını orijinalinden değiştirirken biraz yanlış olmuş gibi. Benim anladığım kadarıyla durum şu:
Chrome’da, diğer Chrome uzantılarının da kolayca kullanabildiği herkese açık Chrome API’sini kullanan yerleşik bir uzantı var. Sorun şu ki bu uzantı Google’ın kendi alan adlarıyla iletişim kurarken bu bilgileri paylaşıyor, ancak diğer web siteleri bunu yapamıyor. “Özel gizli API” yok.
“Gizli” olması ise chrome://extensions’a gitseniz bile listede görünmediği anlamına geliyor. Ve zaten söylendiği gibi bu aynı zamanda bir Chrome API’si.
chrome.runtime.sendMessage( 'nkeimhogjdpnpccoofpliimaahmaaome', { method: 'cpu.getInfo' }, response => { console.log('CPU Info:\n', JSON.stringify(response, null, 2)); } );PWA olarak uygulanmış tarayıcı kodunun sistem bilgilerine erişmek için ayrı izin istemesi garip olurdu; çünkü bu, tarayıcı işlevinin kendisinin bir parçasıdır. Uzun zamandır var olan özel olmayan API’nin bir diğer kullanımı da Chrome Web Store gibi temel işlevler sunan Google’a özel web sitelerini Chrome tarayıcıyla entegre ederek, web sayfasından uzantı kurulmasına ve kaldırılmasına izin vermektir.
Bu,
"system.cpu"izni varsa herhangi bir uzantının erişebileceği chrome.system.cpu API’sini kullanıyor gibi görünüyorhttps://developer.chrome.com/docs/extensions/reference/api/s...
Bu uzantının istediği tüm izinler burada görülebilir:
https://source.chromium.org/chromium/chromium/src/+/main:chr...
Diğer video konferans uygulamaları, kullanıcı ayrı bir uzantıyı elle kurma gibi büyük bir adım atmadıkça bu tür erişim iznine sahip değil
Pek şaşırtıcı değil. Google’a çok yakışan bir davranış. Asıl mesele bunun diğer Chromium tarayıcılarında da olup olmadığı. Edge, Brave, Chromium, Ungoogled Chromium’da durum ne?
"google"dizgesinin geçtiği her yeri bilerek karıştırıyorFirefox’ta denerseniz “CPU kullanımını görmek için Google Chrome kullanmayı deneyin” diyor
Safari’de de Apple’a özel işlevler var. Örneğin Apple hesabıyla başka web sitelerinde oturum açarken, passkey veya parola otomatik doldurmadan farklı çalışan özel bir iletişim kutusu gösterebiliyor
Diğer tarayıcılarda yönlendirme tabanlı bir akıştan geçiliyor. Bunun JavaScript’te nasıl uygulandığını hep merak etmişimdir. Özel argümanlar eklenmiş WebAuthn gibi bir şey mi?
Google bunu daha önce de yapmıştı. Ayrıntılar bulanık ama sanırım Native Client alan adı düzeyinde bir izin listesiyle yalnızca Hangouts’ta çalışacak şekilde ayarlanmıştı ya da buna benzer bir şeydi