2 puan yazan GN⁺ 2024-07-10 | 1 yorum | WhatsApp'ta paylaş
  • Google Chrome, yalnızca *.google.com sitelerine 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.com alan adı için sunuluyor

*.google.com için özel API’nin açığa çıkardığı bilgiler

  • Chrome, yalnızca *.google.com sitelerine 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.com alan 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_services yolunda 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.com alan 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

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

 
GN⁺ 2024-07-10
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.

    • Hayır, bu şu anda Google Meet tarafından kullanılıyor. Chrome’da meet.google.com’daki "Troubleshooting" panelini açarsanız sistem genelindeki CPU kullanımını gerçek zamanlı görebiliyorsunuz :)
    • Gizlilik ihlalini bir yana bırakırsak, bu bariz bir antitröst meselesi değil mi? Google, tarayıcı hâkimiyetini kötüye kullanarak video konferans pazarında kendi ürününe avantaj sağlıyor.
    • CPU/GPU kullanımı vb. izlenerek hangi kalitede video akışının kullanılacağını ince ayarlamak için de kullanılıyor olabilir diye düşünüyorum.
      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.

    • Bence bu o değil. Az önce Firefox’ta bir Meet araması yaptım; sorun giderme düğmesine basınca CPU grafiği devre dışı kalıyor ve "CPU kullanımını görmek için Chrome’u kullanmayı deneyin" yazısı çıkıyor.
      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ç yes işiyle kontrol ettim; kesinlikle sistem geneli. Ayrıca ad karmaşası hep oluyor ama GVC gerçekten net ve iyi bir ad.
    • İlginç bir hikâye ama bunun bu konuyla uzaktan bile bağlantılı olma ihtimali yok gibi görünüyor. GCV platformunu özel bir Linux dağıtımıyla işleten insanların makine istatistiklerini raporlamak için “yaptığımız özel uzantıyı dünyadaki tüm Chrome kurulumlarına koyalım” yolunu seçmiş olmaları mümkün değil.
      Herhangi bir *.google.com sayfasında doğrudan deneyebilirsiniz:
      chrome.runtime.sendMessage("nkeimhogjdpnpccoofpliimaahmaaome", {"method":"cpu.getInfo"}, (resp) => { console.log(resp); });
    • “Google dünyadaki tüm Chrome örneklerini sorgulayabiliyor mu, yoksa bu yalnızca google.com’da mı mümkün?” ayrımını pek anlamıyorum.
      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?
    • Google’da hiç çalışmadım ama bu açıklama bana pek ikna edici gelmiyor.
      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?
    • İlginç. Belki de Google’ın büyük kısmı bugüne kadar bunun mümkün olduğunu bilmiyordu.
      Ş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.

    • Tam olarak aynı şey değil.
      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.
    • Bu, tarayıcının işletilmesiyle doğrudan ilgili web siteleri için. Chrome ise Google Meet gibi ayrı Google ürünlerinin kullandığı bir API’yi açığa çıkarı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.
    • Uzun zaman önce UITour kısmı hakkında bir şeyler yazmıştım: https://www.mkelly.me/blog/content-uitourjs/
      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.
    • Geçen ay WebKit’in Quirks.cpp commit’i paylaşılmıştı [0]. Muhtemelen aradığınız şey bu değil ama benzer bir havası var.
      [0] https://news.ycombinator.com/item?id=40631439
    • Bu tür API’ler tarayıcı özellikleri ve kullanıcıyı alıştırma süreçleriyle ilgili. Mozilla’nın başka bir ürününü, başka şirketlerin benzer ürünlerine göre avantajlı kılmak için eklenmiş değiller.
  • 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ı.

    • “Oldukça sıradan” açıklamasının aksine, bu hiç de sıradan değil. Kendi ürününe haksız rekabet avantajı sağlamanın kusursuz bir örneği.
      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.
    • Asıl mesele de bu zaten. Diğer video konferans araçları bu tür debug seçenekleri sunamıyor ve az önce söylediğiniz gibi bu özellik faydalı.
    • Rakip Zoom’un bir tarayıcı sürümü var. Performans sorunlarını teşhis etmek için bu API’yi kullanabiliyor mu? Kullanamıyorsa Avrupa’daki düzenleyici kurumlar bununla ilgilenebilir.
      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.
    • Google’ın yalnızca kendilerine yarayan özellikler sağlayan rekabet karşıtı bir tarayıcı yapması çok hoş.
      Bir Google çalışanının sessizce geçiştirilecek kısmı doğrudan söylediği için teşekkürler.
    • Tekel gücünün aktarılması sıradan bir şey değil, yasa dışıdır.
  • 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.

    • “Özel” olması, diğer uzantılar gibi kullanıcı tarafından kurulmuş değil Chrome’a yerleşik olduğu anlamına geliyor.
      “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.
    • Bunu bir Google sitesindeki Chrome DevTools konsoluna yapıştırırsanız özel API gibi görünüyor:
      chrome.runtime.sendMessage( 'nkeimhogjdpnpccoofpliimaahmaaome', { method: 'cpu.getInfo' }, response => { console.log('CPU Info:\n', JSON.stringify(response, null, 2)); } );
    • “Yerleşik uzantı” olsa bile devre dışı bırakılamıyorsa hâlâ tarayıcının bir parçasıdır.
    • Zararsız ve basit bir açıklama da mümkün. Tarayıcı işlevlerinin bir kısmının derlenmiş/bağlanmış C++ yerine, google.com imzalı bir web uygulaması olarak uygulandığını hayal edebilirsiniz.
      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.
    • İşlevsel olarak aynı şey.
  • Bu, "system.cpu" izni varsa herhangi bir uzantının erişebileceği chrome.system.cpu API’sini kullanıyor gibi görünüyor
    https://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...

    • Doğru, sorun da tam olarak bu. Google, tarayıcının kendi işleyişiyle ilgisi olmayan bir uzantıyı Chrome’a paket halinde ekleyerek, başka bir ürün olan Hangouts’a ayrıcalıklı erişim veriyor
      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?

    • Diğerlerini bilmiyorum ama ungoogled chromium muhtemelen buna sahip değildir; çünkü tam da bu tür şeylerden kaçınmak için kod içindeki "google" dizgesinin geçtiği her yeri bilerek karıştırıyor
    • Edge’de etkin. Edge’de Google Meet sorun giderme ekranını açarsanız sistem CPU’sunu görebiliyorsunuz
      Firefox’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