功能
可以完整詳細地獲得每一個(gè)用戶(hù)點(diǎn)擊廣告的數據。包括點(diǎn)擊時(shí)間,用戶(hù)的IP,頁(yè)面來(lái)源地址,被點(diǎn)擊的廣告網(wǎng)站地址,如果你的站點(diǎn)上保存了用戶(hù)cookie的話(huà),甚至可以查詢(xún)到是哪位用戶(hù)點(diǎn)了你的廣告
用純客戶(hù)端javascript代碼和AJAX技術(shù)實(shí)現點(diǎn)擊監聽(tīng)和向服務(wù)端發(fā)送點(diǎn)擊數據,服務(wù)端我用的是ASP腳本,只是用來(lái)保存點(diǎn)擊數據和提供瀏覽器端的點(diǎn)擊查詢(xún),可以更換為其他服務(wù)端腳本,如PHP,JSP等 數據保存方式為了簡(jiǎn)單,我用純text文本保存,一行保存一條數據,數據字段用逗號分隔,這樣方便用戶(hù)將這個(gè)文本另存為csv格式,csv就能用excel打開(kāi)了。 查看廣告點(diǎn)擊數據可設訪(fǎng)問(wèn)密碼
安裝和使用
下載
這個(gè)文件解壓出里面的adLog.asp文件 用記事本打開(kāi)adLog.asp找到如下幾行:
Const TextFile = "adLog.txt" ‘保存點(diǎn)擊數據的text文件,是相對路徑,可以修改
Const AccessPassword = "adLog" ‘查看點(diǎn)擊時(shí)的訪(fǎng)問(wèn)密碼,可以自行設定,如果無(wú)需身份認證,請將AccessPassword值改為""即可
Const SessionName = "google_ad_logger" ‘Session名稱(chēng),用來(lái)保存訪(fǎng)問(wèn)密碼到指定Session中
Const WebCharset = "utf-8" ‘網(wǎng)站的編碼類(lèi)型,如果是GB-2312,請自行修改
Const UserName = "username" ‘用戶(hù)名cookie,如果你的站沒(méi)有用戶(hù)cookie,就不用管了
可以根據自己實(shí)際需要修改其值 修改完畢后將文件上傳到你的web站點(diǎn)上,任何路徑下都可以。這里注意:如果你的編碼是gb-2312,請將文件用記事本打開(kāi),并選擇另存為,將編碼改回為ANSI。 修改你投放了google廣告的頁(yè)面文件,將以下代碼插入你的頁(yè)面任意位置: <script language="javascript" type="text/javascript" src="http://www.example.com/adlog.asp?act=script"></script>
將其中的頁(yè)面路徑修改為你自己實(shí)際的地址 安裝完畢以后頁(yè)面就自動(dòng)開(kāi)始跟蹤廣告點(diǎn)擊了 查看點(diǎn)擊數據你可以上ftp直接下載你指定的文本文件查看,或者訪(fǎng)問(wèn)http://www.example.com/adlog.asp
技術(shù)原理
其實(shí)這也不是什么高深技術(shù),原理及其簡(jiǎn)單,主要核心功能都是在客戶(hù)端javascript中。
通過(guò)查看發(fā)現google的廣告代碼全部放在一個(gè)iframe中。所以首先通過(guò)document.getElementsByTagName("iframe")得到頁(yè)面中所有iframe標簽的元素集保存到一個(gè)數組中 然后遍歷數組檢查iframe.src值是否包含有"googlesyndication.com"這串字符串,如果有就認為這個(gè)iframe是google的廣告顯示iframe 得到google顯示廣告的iframe后給這個(gè)iframe增加一個(gè)onfocus事件,這個(gè)事件就是當元素獲得焦點(diǎn)時(shí)觸發(fā)的事件 在onfocus事件中檢查window.status的值,也就是狀態(tài)欄顯示的字符串,如果匹配"go to"和"鍵連至"這幾個(gè)字符串就提取中網(wǎng)址地址,這個(gè)地址就認為是被點(diǎn)擊的廣告網(wǎng)址 利用AJAX立即將用戶(hù)的點(diǎn)擊數據POST到服務(wù)端紀錄下來(lái),這里的AJAX無(wú)需再響應服務(wù)端傳回的數據了,只管發(fā)送出去即可
幾個(gè)核心代碼
編寫(xiě)過(guò)windows程序的朋友一定知道微軟的Visual Stdio中包含有一個(gè)Spy的小工具,這個(gè)小工具中就有一個(gè)功能用來(lái)監聽(tīng)某個(gè)窗口句柄的所有觸發(fā)事件,用起來(lái)很爽,我在寫(xiě)這個(gè)廣告紀錄器時(shí)也自己實(shí)現了一個(gè)網(wǎng)頁(yè)上用的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+"事件觸發(fā)\\n‘+v.value};");
</script>
我就是用這種方法查看iframe上觸發(fā)的事件,查看后發(fā)現鼠標單擊iframe時(shí)能接收到的事件中有onbeforeactivate、onactivate、onfocusin、onfocus這四個(gè),我就挑了onfocus來(lái)監聽(tīng)用戶(hù)點(diǎn)擊的 ajax部分我用的是
XHConn組件,小巧靈活簡(jiǎn)單,很好使。 前面講解安裝時(shí)我特意說(shuō)過(guò)包含js的代碼可以放在網(wǎng)頁(yè)的任意位置,這里我用的是一個(gè)稱(chēng)作
domFunction的js組件,這個(gè)組件可以實(shí)現循環(huán)查詢(xún)DOM對象,直到發(fā)現DOM裝載入頁(yè)面并有效后再執行代碼,相當于document.onload事件的作用,google adsense的廣告有時(shí)候會(huì )顯示很慢,用了這個(gè)Dom檢查程序就可以保證每次頁(yè)面裝載都能查找到google的iframe,萬(wàn)無(wú)一失,也方便了用戶(hù)添加代碼時(shí)無(wú)需考慮位置的影響了。 按理,這個(gè)程序應該寫(xiě)成一個(gè)asp外加一個(gè)js兩個(gè)文件,但是看了Andy兄介紹的
單頁(yè)面應用程序(Single Page Application這篇文章,很是欣賞,所以特意將兩個(gè)文件合寫(xiě)到一個(gè)文件中了 服務(wù)端保存和讀取文本文件的內容時(shí),我用的分別是FSO和ADODB.Stream,如果你的站點(diǎn)不支持這些組件,請和我聯(lián)系,我改寫(xiě)其他方式
遺憾
最遺憾的是這個(gè)程序只能用在IE下啟作用,Firefox下無(wú)法跟蹤用戶(hù)點(diǎn)擊操作,原因是Firefox中ifrmae根本觸發(fā)不了任何用戶(hù)操作事件,去
Demo和下載
如果想立即查看下程序實(shí)際運行,我特意提供了一個(gè)demo文件:
http://www.duduwolf.com/test/adLogDemo.asp,這個(gè)文件沒(méi)有設訪(fǎng)問(wèn)密碼,任何人都能查看點(diǎn)擊數據,你也可以通過(guò)裝載<script language="javascript" type="text/javascript" src="http://www.example.com/adlog.asp?act=script"></script>這串代碼立即從你的網(wǎng)站上實(shí)現點(diǎn)擊跟蹤,只不過(guò)點(diǎn)擊后的數據是保存在我的網(wǎng)站上并且是公開(kāi)的。
下載源文件:
Google Adsense Click Logger在線(xiàn)查看源代碼:
查看源代碼(utf-8,如果顯示亂碼請修改當前頁(yè)面編碼)
尾
這個(gè)程序我自己用了好幾天了,遲遲沒(méi)有發(fā)布出來(lái)就是擔心大量應用后google估計就會(huì )修改google adsense代碼了,還有就是我不知道這樣做是不是違背了google廣告的保留條款,仔細查看后發(fā)現有這樣一條
Google 嚴禁以任何手段人為提高點(diǎn)擊次數或網(wǎng)頁(yè)展示次數,并通過(guò)工程系統和人工分析對行為進(jìn)行密切監控。
所以希望大家只是拿來(lái)當技術(shù)研究,切勿長(cháng)時(shí)間靠這個(gè)跟蹤客戶(hù)點(diǎn)擊,雖然目前這個(gè)程序不影響任何adsense投放和點(diǎn)擊后的動(dòng)作和行為,但是如果有一天google的工作人員親自上你的站點(diǎn)研究代碼就全暴露了。我blog上的數據也統計了好幾天,基本和google提供的統計數據差不多,因為我的blog上有用戶(hù)留言的cookie,所以我特意保存了用戶(hù)名,想看看每天都是誰(shuí)在點(diǎn)擊我的廣告,統計后發(fā)現點(diǎn)擊我廣告的人都沒(méi)在blog中留言,在blog中留言保存了cookie的用戶(hù)從來(lái)不點(diǎn)擊廣告