Что именно означает этот URL? - PullRequest
1 голос
/ 24 февраля 2009

Я использую различные теги аналитики в одном из наших веб-приложений. Большинство из них называют код JavaScript для отслеживания.

Некоторые теги имеют URL-адрес gif-изображения со строками запроса.

Пример: http://www.google -analytics.com / __ utm.gif? Utmwv = 45,542

Что именно делает этот URL? Как они получают значения из строки запроса?

Обновление: (после прочтения некоторых ответов) я знаю, что каждый браузер будет загружать gif размером 1x1 пиксель. Но как они получают значения из строки запроса? в приведенном выше случае, как они могут получить значение utmwv? Есть примеры кода?

Ответы [ 7 ]

4 голосов
/ 24 февраля 2009

По сути, вы пишете скрипт на предпочитаемом вами языке и сопоставляете этот скрипт с yourtrackingscript.gif . ..jpg, PNG даже.

Сделали это в asp.net с помощью обработчика http.

Сценарий читает строку запроса, как и любую другую динамическую страницу (aspnet, asp, php, что угодно), затем записывает ее в файл базы данных или журнала или выполняет все, что вы хотите с ней делать.

Затем установите заголовок типа контента соответствующим образом, например, «image / gif», и отправьте обратно изображение в 1 пиксель или изображение любого другого размера, которое вам нравится.

Только для 1-пиксельного изображения я открыл 1-пиксельное изображение типа spacer.gif в шестнадцатеричном редакторе и жестко запрограммировал его в виде байтового массива для отправки в качестве ответа, что сэкономит немного IO, если оно будет очень сильно пострадали, вы можете прочитать файл с диска или БД и отправить его обратно.

Это часто используемый прием в рассылках электронной почты для отслеживания открытых ставок и т. Д.
Часто самое сложное - это когда у вас недостаточно прав для сопоставления URL-адреса со сценарием на общем компьютере, но вы можете разработать его как обычный скрипт / программу, а затем разобраться с отображением, как только оно заработает. ,

Большинство современных браузеров будут реагировать на URL-адрес aspx или php (.etc ...) в виде изображения, если он отправляет правильные заголовки, это старые браузеры, плагины няни для браузера и почтовые клиенты, которые являются самыми непривычными .

1 голос
/ 24 февраля 2009

Это не GIF, это космическая станция (бета) !

Другими словами, хотя URL-адрес указывает на изображение, веб-сервер www.google-analytics.com передает этот запрос некоторому сценарию обработки, который затем извлекает данные и отправляет содержимое изображения 1x1 GIF обратно в браузер.

Вот пример использования веб-сервера Apache и mod_rewrite:

# in .htaccess
RewriteEngine On
RewriteRule ^__utm\.gif /someprocessingscript.php [QSA]

<?php // in someprocessingscript.php
do_some_tracking($_GET); // this would probably analyze and log data
header('Content-Type: image/gif');
readfile('1x1.gif');
exit;
?>

Другой вариант: обслуживать настоящий GIF (возможно, с Cache-Control: no-cache), регистрировать все обращения, впоследствии анализировать журналы. Это может быть быстрее, поскольку для этого не требуется никакой внутренней перезаписи и сценариев при каждом доступе.

1 голос
/ 24 февраля 2009

Любой браузер будет загружать изображение по его ссылке, даже без JavaScript. Когда это происходит, параметры строки запроса и заголовки запроса от клиента могут быть получены для аналитики. Таким образом, он позволяет захватывать аналитику вообще без JavaScript.

1 голос
/ 24 февраля 2009

Так же, как вы можете передавать строки запроса на страницы ASP.NET, вы можете фактически передавать строки запроса на любой URL; если вы используете основанную на MVC инфраструктуру, такую ​​как ASP.NET MVC или Rails, захватить параметры из URL-адреса, как это легко Затем все, что вам нужно сделать, это вернуть изображение в формате GIF.

0 голосов
/ 24 февраля 2009

Но как они получают значения из строки запроса? в приведенном выше случае, как они могут получить значение utmwv? Какие-нибудь примеры кода?

Если им нужна вызывающая страница, у них есть реферер, если им нужны их параметры, они имеют URI запроса.

print($_SERVER['HTTP_REFERER']);
print($_SERVER['REQUEST_URI']);
0 голосов
/ 24 февраля 2009

хорошо. __Utm.gif - это изображение размером 1x1 пиксель, к которому Google должен регистрировать доступ - это означает, что они также собирают значение строки запроса в своих журналах. ничего сложного в этом нет. я думаю, что utmwv был номером версии, но не ясно, что означает это число

0 голосов
/ 24 февраля 2009

Строка запроса по-прежнему отправляется на сервер при запросе изображения.

Конечно, я не знаю точных деталей того, как они работают с данными на сервере, но .gif - довольно распространенный способ отправки данных обратно для аналитических целей.

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