2009-02-24 84 views
1

我在其中一个Web应用程序中使用了不同的分析标签。他们大多数都会调用一个javascript代码进行跟踪。这个网址究竟是什么意思?

一些标签有querystrings的gif图像的网址。

例子:http://www.google-analytics.com/__utm.gif?utmwv=45.542

这究竟网址吗?他们如何从查询字符串中获取值?

更新:(阅读一些答案后)我知道每个浏览器将加载gif这是1x1像素。但他们如何从查询字符串获取值?在上述情况下,他们如何检索utmwv的值?任何代码示例?

回答

4

基本上,您使用您的首选语言编写脚本,并将该脚本映射到yourtrackingscript.gif。 ..jpg,甚至。

在asp.net中使用http处理程序完成了此操作。

该脚本像其他任何动态页面(aspnet,asp,php,任何真正的东西)一样读取查询字符串,然后将其写入数据库或日志文件,或者执行任何其他您想要的操作。

然后适当设置内容类型标题,例如“image/gif”,然后发送1像素图像或任何其他您喜欢的大小的图像。

对于只有1像素的图像,我在十六进制编辑器中打开了一个1像素的spacer.gif类型的图像,并将其硬编码为字节数组发送出去作为响应,将节省一点IO开销if它会受到很大打击,从外观上讲,您可以从磁盘或数据库读取文件并将其发回。

这在电子报中常用的伎俩来跟踪打开率等
通常它最难的一点是,当你没有足够的权限的URL脚本映射一个共享的机器上,但你可以将其作为普通的脚本/程序进行开发,然后在完成工作后将其映射出来。

大多数现代浏览器会响应一个aspx或php(.etc ...)网址作为图像,如果它发送正确的标题,它是旧浏览器,浏览器保姆插件和电子邮件客户端是最有趣的它。

0

请求图像时,查询字符串仍然发送到服务器。

当然,我不知道他们如何处理服务器上数据的具体细节,但.gif是一种非常常见的将数据发送回分析目的的方式。

1

就像您可以将查询字符串传递给ASP.NET页面一样,您实际上可以将查询字符串传递给任何URL;如果您使用基于MVC的框架(如ASP.NET MVC或Rails),从这样的URL捕获参数很容易。然后,你所要做的就是返回一个GIF图像。

0

well .. __utm.gif是Google必须记录访问的1x1像素图像 - 这意味着它们也正在收集查询字符串值。真的没有什么棘手的。我thot utmwv是一个版本号,但不清楚这个数字是什么意思

+0

怎么交配?我知道它的gif和任何浏览器都会加载它。但他们如何从查询字符串中获取值。任何代码? :)感谢您的回复 – Shoban 2009-02-24 07:05:36

1

任何浏览器将加载他的网址,即使没有JavaScript的图像。如果存在,则可以捕获客户端的查询字符串参数和请求标头以进行分析。因此,它允许在没有javascript的情况下捕获分析数据。

+0

它如何被捕获?是我的问题:) – Shoban 2009-02-24 07:04:35

1

这不是GIF,这是一个空间站(测试版)

换句话说,虽然网址似乎指向一个图像,但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),记录所有的访问,事后分析日志。这可能会更快,因为这不需要内部重写,每次访问都不需要脚本。

0

但他们如何从查询字符串获取值?在上述情况下,他们如何检索utmwv的值?任何代码示例?

如果他们想要调用页面他们有引用者,如果他们想要他们的参数他们有请求的URI。

print($_SERVER['HTTP_REFERER']); 
print($_SERVER['REQUEST_URI']);