fw:用AJAX跟蹤Google Adsense廣告點擊

功能

  ·可以完整詳細地獲得每一個用戶點擊廣告的數據。包括點擊時間,用戶的IP,頁面來源地址,被點擊的廣告網站地址,如果你的站點上保存了用戶cookie的話,甚至可以查詢到是哪位用戶點了你的廣告。

border="0" marginwidth="0" marginheight="0" src="http://219.239.88.50:80/adsunion/get/;pl=pl-20-pip-software;tp=if;sk=0;ck=0;/?" frameborder="0" noresize="65535" width="1" scrolling="no" height="1">
  ·用純客戶端javascript代碼和AJAX技術實現點擊監聽和向服務端發送點擊數據,服務端我用的是ASP腳本,只是用來保存點擊數據和提供瀏覽器端的點擊查詢,可以更換爲其他服務端腳本,如PHP,JSP等。

  ·數據保存方式爲了簡單,我用純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的用戶從來不點擊廣告
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章