javascript - Google Analytics Sayfa İçi Analitiği nasıl çalışır?


Google Analytics, kendi web sitenizde tıklama oranlarını ve diğer bilgileri doğrudan göstermek için 'Sayfa İçi Analitik' görünümüne sahiptir. Tüm tıklamaları kaydeden benzer bir şey oluşturmak istiyorum.

Sorun şu ki, Google'ın Sayfa İçi Analitik görünümlerini nasıl uyguladığından gerçekten emin değilim - sanki bir iframe ya da iki tane kullanıyorlar ve diğer sayfalara kendi HTML ve JavaScript'lerini yerleştirmişler.

Böyle bir şeyi nasıl yaparsınız - iframe'ler en iyi yol mu? Eğer domainX, domainY'nin görüntülenmesini manipüle etmeye çalışıyorsa Javascript'in aynı kaynak güvenlik politikalarından nasıl kaçınırsınız?

Cevap #1

Bu çok ilginç bir soru. Haklısınız, aynı köken politikası JS enjekte etmeyi yasaklıyor. Ama Google Analytics'in bir avantajı var: zaten sitenizde bulunuyor (izleyici kodu).

İşte bunun nasıl işlediği (görebildiğim kadarıyla):

  • Sayfa içi analitiği açtığınızda, önce https://www.google.com/analytics/reporting/iyp_launch adresine yönlendirilirsiniz
  • Bu sayfa, sitenize yönlendirir ve URL'ye bir Google oturumu ekler (örneğin http://example.com/#gaso=THESESSION)
  • Takip sistemi şimdi yönlendirenin iyp_launch olup olmadığını ve gaso'nun ayarlanıp ayarlanmadığını kontrol ediyor. Eğer öyleyse, sadece takip sistemini yüklemekle kalmaz, aynı zamanda daha fazla veri talep etmek ve katmanları (overlay) render etmek için gereken JS'i de enjekte eder. Bu şekilde, JS çerçeve (veya pencere) içinde çalıştırılır ve aynı kaynak politikası atlanır.
  • Google Analytics zaten ziyaretinizi izlediğinden (yani sizi önceki sayfayı görüntüleyen aynı kullanıcı olarak tanımlar), o andan itibaren ziyaretiniz bitene kadar (yani sayfayı kapatana kadar) izleyiciyle birlikte ek JS'i enjekte edebilir. Bu şekilde, bir bağlantıya tıkladıktan sonra katmanlar tekrar render edilebilir.

Yani sanırım sonucu şöyle özetleyebiliriz: Sayfa içi analiz gibi şeyler, eğer sitenin sahibi web sitesine kontrol ettiğiniz bir betik ekleyerek size güvenmişse yapılabilir (böyle bir şey yapmadan önce çok dikkatli olunması gerektiğinin iyi bir örneği). Eğer siteye böyle bir erişiminiz yoksa, aynı kaynak politikasını atlatmak imkansız olabilir - en azından, bunu yapmanın başka bir yolunu düşünemiyorum (belki tüm istekleri sunucunuz üzerinden yönlendirmek hariç, ama bu başka büyük sorunlara yol açar).

Cevap #2

Bence bu oldukça basit bir şekilde yapılabilir. Kullanıcının bir bağlantıya her tıkladığında iframe içindeki özel bir sayfaya istek/gönderim yapmasını sağlayan bir javascript ekliyorsunuz. Şuna benzer bir şey (jquery):

$('a').live('click', function() {
    $('#' + iframeid).attr('http://somedomain.com/my_magic_page.php?linkClicked=' + $(this).attr('id') + '&page=' + window.location.toString());
}

Ama işe yarayıp yaramayacağını bilmiyorum.