这个网址究竟是什么意思?

时间:2009-02-24 06:46:10

标签: javascript seo query-string

我在其中一个网络应用程序中使用了不同的分析标记。他们中的大多数都使用javascript代码进行跟踪。

某些标签包含带有查询字符串的gif图像的网址。

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

这个网址到底是做什么的?他们如何从查询字符串中获取值?

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

7 个答案:

答案 0 :(得分:4)

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

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

该脚本像任何其他动态页面一样读取查询字符串(aspnet,asp,php,真的是什么),然后将其写入数据库或日志文件,或者做任何你想用它做的事情。

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

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

这是电子邮件简报中常用的技巧,用于跟踪开放率等 通常最困难的是当你没有足够的权限将url映射到共享机器上的脚本时,你可以将它作为普通的脚本/程序开发,然后在你运行它之后将映射整理出来。

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

那不是GIF,那是一个空间站(beta)

换句话说,尽管网址似乎指向某个图片,但www.google-analytics.com上的网络服务器会将此请求发送给某些处理脚本,然后该脚本会提取数据并将1x1 GIF图像内容发送回浏览器。

以下是使用Apache webserver和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),记录所有访问,然后分析日志。这可能会更快,因为这不需要内部重写,也不需要每次访问都有脚本。

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

好.. __ utm.gif是一个1x1像素的图像,谷歌必须记录访问权限 - 这意味着他们也在他们的日志中收集查询字符串值。这真的没什么大不了的。我觉得utmwv是一个版本号,但不清楚这个数字是什么意思

答案 6 :(得分:0)

  

但他们如何从查询字符串中获取值?在上面的例子中,他们如何检索utmwv的值?任何代码示例?

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

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