Как работает Google Analytics In-Page Analytics? - PullRequest
6 голосов
/ 06 марта 2011

Google Analytics имеет представление «In-Page Analytics» для отображения рейтинга кликов и другой информации непосредственно на вашем собственном веб-сайте.Я ищу построить что-то подобное, что регистрирует все клики.

Проблема в том, что я не совсем уверен, как Google реализует свои представления In-Page Analytics - кажется, они используют один или два iframe и внедрили свои собственные HTML и JavaScript на другие страницы.

Как можно поступить таким образом - лучше ли использовать iframe?Как бы вы избежали политик безопасности Javascript того же происхождения, если domainX пытается манипулировать рендерингом domainY?

Ответы [ 2 ]

9 голосов
/ 01 июня 2011

Это очень интересный вопрос. Вы правы, такая же политика происхождения запрещает инъекцию JS. Но у Google Analytics есть преимущество: оно уже есть на вашем сайте (код трекера).

Вот как это работает (насколько я вижу):

  • Когда вы открываете аналитику на странице, вы сначала переходите на https://www.google.com/analytics/reporting/iyp_launch
  • Эта страница перенаправляет на ваш сайт и добавляет к URL-адресу сеанс Google (например, http://example.com/#gaso=THESESSION
  • Трекер теперь проверяет, является ли реферер iyp_launch и установлен ли gaso. Если да, он не только загружает трекер, но также вводит JS, необходимый для запроса дополнительных данных и рендеринга наложений. Таким образом, JS выполняется внутри фрейма (или окна) и обходит политику того же происхождения.
  • Поскольку Google Anaytics уже отслеживает ваш визит (т. Е. Идентифицирует вас как того же пользователя, который просматривал предыдущую страницу), с тех пор он может вводить дополнительный JS вместе с трекером, пока ваш визит не закончится (т.е. вы закроете страницу) , Таким образом, наложения могут быть обработаны снова после нажатия на ссылку.

Так что, я думаю, суть в том, что такие вещи, как внутристраничная аналитика, могут быть выполнены, если владелец сайта уже доверял вам, добавив скрипт, которым вы управляете, на свой сайт (это хороший пример того, почему нужно быть очень осторожным). прежде чем делать такую ​​вещь). Если у вас нет такого доступа к сайту, возможно, будет невозможно обойти политику одного и того же происхождения - по крайней мере, я не могу придумать другой способ сделать это (за исключением, возможно, проксирования всех запросов через ваш сервер). , но это приводит к другим серьезным проблемам).

0 голосов
/ 06 марта 2011

Я думаю это можно сделать довольно просто.Вы внедряете JavaScript, который гарантирует, что всякий раз, когда пользователь щелкает ссылку, он запрашивает / публикует специальную страницу в iframe.Примерно так (jquery):

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

Не знаю, будет ли это работать, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...