功能
·可以完整詳細地獲得每一個用戶點擊廣告的數據。包括點擊時間,用戶的IP,頁面來源地址,被點擊的廣告網站地址,如果你的站點上保存了用戶cookie的話,甚至可以查詢到是哪位用戶點了你的廣告。
·數據保存方式爲了簡單,我用純text文本保存,一行保存一條數據,數據字段用逗號分隔,這樣方便用戶將這個文本另存爲csv格式,csv就能用excel打開了。
·查看廣告點擊數據可設訪問密碼
安裝和使用
下載這個文件解壓出裏面的adLog.asp文件
用記事本打開adLog.asp找到如下幾行:
Const TextFile = "adLog.txt" ’保存點擊數據的text文件,是相對路徑,可以修改
Const AccessPassword = "adLog" ’查看點擊時的訪問密碼,可以自行設定,如果無需身份認證,請將AccessPassword值改爲""即可
Const SessionName = "google_ad_logger" ’Session名稱,用來保存訪問密碼到指定Session中
Const WebCharset = "utf-8" ’網站的編碼類型,如果是GB-2312,請自行修改
Const UserName = "username" ’用戶名cookie,如果你的站沒有用戶cookie,就不用管了
可以根據自己實際需要修改其值
修改完畢後將文件上傳到你的web站點上,任何路徑下都可以。這裏注意:如果你的編碼是gb-2312,請將文件用記事本打開,並選擇另存爲,將編碼改回爲ANSI。
修改你投放了google廣告的頁面文件,將以下代碼插入你的頁面任意位置:
<script language="javascript" type="text/javascript" src="http://www.example.com/adlog.asp?act=script"></script>
將其中的頁面路徑修改爲你自己實際的地址
安裝完畢以後頁面就自動開始跟蹤廣告點擊了
查看點擊數據你可以上ftp直接下載你指定的文本文件查看,或者訪問http://www.example.com/adlog.asp
技術原理
其實這也不是什麼高深技術,原理及其簡單,主要核心功能都是在客戶端javascript中。
·通過查看發現google的廣告代碼全部放在一個iframe中。所以首先通過document.getElementsByTagName("iframe")得到頁面中所有iframe標籤的元素集保存到一個數組中
·然後遍歷數組檢查iframe.src值是否包含有"googlesyndication.com"這串字符串,如果有就認爲這個iframe是google的廣告顯示iframe
得到google顯示廣告的iframe後給這個iframe增加一個onfocus事件,這個事件就是當元素獲得焦點時觸發的事件
·在onfocus事件中檢查window.status的值,也就是狀態欄顯示的字符串,如果匹配"go to"和"鍵連至"這幾個字符串就提取中網址地址,這個地址就認爲是被點擊的廣告網址
·利用AJAX立即將用戶的點擊數據POST到服務端紀錄下來,這裏的AJAX無需再響應服務端傳回的數據了,只管發送出去即可
幾個核心代碼
·編寫過windows程序的朋友一定知道微軟的Visual Stdio中包含有一個Spy的小工具,這個小工具中就有一個功能用來監聽某個窗口句柄的所有觸發事件,用起來很爽,我在寫這個廣告紀錄器時也自己實現了一個網頁上用的Spy,代碼如下:
<input type=text id=test><br /> <textarea cols=80 rows=20 id=view></textarea> <script language="JavaScript"> obj = document.getElementById("test"); var v = document.getElementById("view"); for (evt in obj) if (evt.substring(0,2)=="on")eval("obj."+evt+"=function(){v.value =’"+evt+"事件觸發//n’+v.value};"); </script> |
我就是用這種方法查看iframe上觸發的事件,查看後發現鼠標單擊iframe時能接收到的事件中有onbeforeactivate、onactivate、onfocusin、onfocus這四個,我就挑了onfocus來監聽用戶點擊的。
·ajax部分我用的是XHConn組件,小巧靈活簡單,很好使。
·前面講解安裝時我特意說過包含js的代碼可以放在網頁的任意位置,這裏我用的是一個稱作domFunction的js組件,這個組件可以實現循環查詢DOM對象,直到發現DOM裝載入頁面並有效後再執行代碼,相當於document.onload事件的作用,google adsense的廣告有時候會顯示很慢,用了這個Dom檢查程序就可以保證每次頁面裝載都能查找到google的iframe,萬無一失,也方便了用戶添加代碼時無需考慮位置的影響了。
·按理,這個程序應該寫成一個asp外加一個js兩個文件,但是看了Andy兄介紹的單頁面應用程序(Single Page Application這篇文章,很是欣賞,所以特意將兩個文件合寫到一個文件中了。
·服務端保存和讀取文本文件的內容時,我用的分別是FSO和ADODB.Stream,如果你的站點不支持這些組件,請和我聯繫,我改寫其他方式 。
遺憾
·最遺憾的是這個程序只能用在IE下啓作用,Firefox下無法跟蹤用戶點擊操作,原因是Firefox中ifrmae根本觸發不了任何用戶操作事件,去Mozilla上查看資料,官方說明了用document.getElementById("iframe").contentWindow這個對象,但是我嘗試後還是毫無作用,只好作罷,等待高人解決。
·最慚愧的是我怎麼也找不到在onfocus事件中判斷用戶鼠標左右鍵的方法,在iframe上點擊鼠標右鍵也會觸發事件的,程序會被認爲一次有效的用戶點擊,這個問題一定要改改的。
Demo和下載
如果想立即查看下程序實際運行,我特意提供了一個demo文件:http://www.duduwolf.com/test/adLogDemo.asp,這個文件沒有設訪問密碼,任何人都能查看點擊數據,你也可以通過裝載<script language="javascript" type="text/javascript" src="http://www.example.com/adlog.asp?act=script"></script>這串代碼立即從你的網站上實現點擊跟蹤,只不過點擊後的數據是保存在我的網站上並且是公開的。
下載源文件:Google Adsense Click Logger
在線查看源代碼:查看源代碼(utf-8,如果顯示亂碼請修改當前頁面編碼)
結束語
這個程序我自己用了好幾天了,遲遲沒有發佈出來就是擔心大量應用後google估計就會修改google adsense代碼了,還有就是我不知道這樣做是不是違背了google廣告的保留條款,仔細查看後發現有這樣一條
Google 嚴禁以任何手段人爲提高點擊次數或網頁展示次數,並通過工程系統和人工分析對行爲進行密切監控。
所以希望大家只是拿來當技術研究,切勿長時間靠這個跟蹤客戶點擊,雖然目前這個程序不影響任何adsense投放和點擊後的動作和行爲,但是如果有一天google的工作人員親自上你的站點研究代碼就全暴露了。我blog上的數據也統計了好幾天,基本和google提供的統計數據差不多,因爲我的blog上有用戶留言的cookie,所以我特意保存了用戶名,想看看每天都是誰在點擊我的廣告,統計後發現點擊我廣告的人都沒在blog中留言,在blog中留言保存了cookie的用戶從來不點擊廣告