2009-02-24 161 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']); 
相關問題