代码: <%@ CODEPAGE=65001 %> <% '/////////////////////////////////////////////////////////////////////////////// '// Google Adsense Click Logger '// 作 者: duduwolf '// 版权所有: 嘟嘟老窝(http://www.duduwolf.com/) '// 技术支持: [email protected] '/////////////////////////////////////////////////////////////////////////////// %> <% Option Explicit %> <% On Error Resume Next %> <% Response.Charset=WebCharset %> <% Response.Buffer=True %> <% '=====定义全局变量===== Const TextFile = "adLogDemo.txt" '保存点击数据的text文件,是相对路径,可以修改 Const AccessPassword = "" '查看点击时的访问密码,可以自行设定,如果无需身份认证,请将AccessPassword值改为""即可 Const SessionName = "google_ad_logger_demo" 'Session名称,用来保存访问密码到指定Session中 Const WebCharset = "utf-8" '网站的编码类型,如果是GB-2312,请自行修改 Const UserName = "username" '用户名cookie,如果你的站没有用户cookie,就不用管了 '====================== Session.TimeOut = 30 Dim SendUrl, Url SendUrl = "http://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL") Url = Request.ServerVariables("URL") '=====接收客户端AJAX传过来的点击log数据保存到text中 If Request.ServerVariables("REQUEST_METHOD") = "POST" Then Dim fso, f If Request.QueryString("act") = "editLog" Then Call SaveTxtFile() Response.Redirect Url & "?act=editLog" ElseIf Request.QueryString("act") = "login" Then If Request.Form("pwd") = AccessPassword Then Session(SessionName) = AccessPassword Else Response.Clear End If Response.Redirect Url & "?act=editLog" Else Set fso = Server.CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile(Server.MapPath(TextFile), 8, true) f.WriteLine(Now()&","&Request.Form("url")&","&Request.Form("adurl")&","&Request.ServerVariables("REMOTE_ADDR")&","&Request.Form("refer")&","&Request.Cookies(UserName)) f.Close Response.Write "OK" End If Set f = Nothing Set fso = Nothing Response.End End If If Request.QueryString("act") = "script" Then Dim str str = "function XHConn()" & vbcrlf str = str & "{" & vbcrlf str = str & " var xmlhttp = false, bComplete = false;" & vbcrlf str = str & " try { xmlhttp = new ActiveXObject(""Msxml2.XMLHTTP""); }" & vbcrlf str = str & " catch (e) { try { xmlhttp = new ActiveXObject(""Microsoft.XMLHTTP""); }" & vbcrlf str = str & " catch (e) { try { xmlhttp = new XMLHttpRequest(); }" & vbcrlf str = str & " catch (e) { xmlhttp = false; }}}" & vbcrlf str = str & " if (!xmlhttp) return null;" & vbcrlf str = str & " this.connect = function(sURL, sMethod, sVars, fnDone)" & vbcrlf str = str & " {" & vbcrlf str = str & " if (!xmlhttp) return false;" & vbcrlf str = str & " bComplete = false;" & vbcrlf str = str & " sMethod = sMethod.toUpperCase();" & vbcrlf str = str & " try {" & vbcrlf str = str & " if (sMethod == ""GET"")" & vbcrlf str = str & " {" & vbcrlf str = str & " xmlhttp.open(sMethod, sURL+""?""+sVars, true);" & vbcrlf str = str & " sVars = """";" & vbcrlf str = str & " }" & vbcrlf str = str & " else" & vbcrlf str = str & " {" & vbcrlf str = str & " xmlhttp.open(sMethod, sURL, true);" & vbcrlf str = str & " xmlhttp.setRequestHeader(""Method"", ""POST ""+sURL+"" HTTP/1.1"");" & vbcrlf str = str & " xmlhttp.setRequestHeader(""Content-Type""," & vbcrlf str = str & " ""application/x-www-form-urlencoded"");" & vbcrlf str = str & " }" & vbcrlf str = str & " xmlhttp.onreadystatechange = function(){" & vbcrlf str = str & " if (xmlhttp.readyState == 4 && !bComplete)" & vbcrlf str = str & " {" & vbcrlf str = str & " bComplete = true;" & vbcrlf str = str & " fnDone(xmlhttp);" & vbcrlf str = str & " }};" & vbcrlf str = str & " xmlhttp.send(sVars);" & vbcrlf str = str & " }" & vbcrlf str = str & " catch(z) { return false; }" & vbcrlf str = str & " return true;" & vbcrlf str = str & " };" & vbcrlf str = str & " return this;" & vbcrlf str = str & "}" & vbcrlf str = str & vbcrlf str = str & "var e = document.getElementsByTagName(""iframe"");" & vbcrlf str = str & "function bindElement() {" & vbcrlf str = str & " for (var i = 0; i < e.length; i++) { " & vbcrlf str = str & " if(e.src.indexOf('googlesyndication.com') > -1) { " & vbcrlf str = str & " e.onfocus = trackLog;" & vbcrlf str = str & " tag = e;" & vbcrlf str = str & " } " & vbcrlf str = str & " } " & vbcrlf str = str & "}" & vbcrlf str = str & vbcrlf str = str & "function trackLog() { " & vbcrlf str = str & " if (window.status.indexOf('go to') == 0) { " & vbcrlf str = str & " sendLog(document.location, window.status.substring(6));" & vbcrlf str = str & " } " & vbcrlf str = str & " if (window.status.indexOf(""键连至"") == 0) { " & vbcrlf str = str & " sendLog(document.location, window.status.substring(4));" & vbcrlf str = str & " } " & vbcrlf str = str & " document.body.focus();" & vbcrlf str = str & "}" & vbcrlf str = str & " " & vbcrlf str = str & "function sendLog(url, adurl) {" & vbcrlf str = str & " var myConn = new XHConn();" & vbcrlf str = str & " if(myConn) {" & vbcrlf str = str & " var fnNull = function(sXML){}" & vbcrlf str = str & " var request = ""url=""+encodeURIComponent(url)+""&adurl=""+encodeURIComponent(adurl)+""&refer=""+document.referrer;" & vbcrlf str = str & " myConn.connect(""" & SendUrl & """, ""POST"", request, fnNull);" & vbcrlf str = str & " }" & vbcrlf str = str & "}" & vbcrlf str = str & "function domFunction(f, a)" & vbcrlf str = str & "{" & vbcrlf str = str & " var n = 0;" & vbcrlf str = str & " var t = setInterval(function()" & vbcrlf str = str & " {" & vbcrlf str = str & " var c = true;" & vbcrlf str = str & " n++;" & vbcrlf str = str & " if(typeof document.getElementsByTagName != 'undefined' && (document.getElementsByTagName('body')[0] != null || document.body != null))" & vbcrlf str = str & " {" & vbcrlf str = str & " c = false;" & vbcrlf str = str & " if(typeof a == 'object')" & vbcrlf str = str & " {" & vbcrlf str = str & " for(var i in a)" & vbcrlf str = str & " {" & vbcrlf str = str & " if" & vbcrlf str = str & " (" & vbcrlf str = str & " (a == 'id' && document.getElementById(i) == null)" & vbcrlf str = str & " ||" & vbcrlf str = str & " (a == 'tag' && document.getElementsByTagName(i).length < 1)" & vbcrlf str = str & " ) " & vbcrlf str = str & " { " & vbcrlf str = str & " c = true; " & vbcrlf str = str & " break; " & vbcrlf str = str & " }" & vbcrlf str = str & " }" & vbcrlf str = str & " }" & vbcrlf str = str & " if(!c) { f(); clearInterval(t); }" & vbcrlf str = str & " }" & vbcrlf str = str & " if(n >= 60)" & vbcrlf str = str & " {" & vbcrlf str = str & " clearInterval(t);" & vbcrlf str = str & " }" & vbcrlf str = str & " " & vbcrlf str = str & " }, 250);" & vbcrlf str = str & "};" & vbcrlf str = str & "var foobar = new domFunction(function(){bindElement();}, { 'iframe' : 'tag' });" Response.Clear Response.ContentType = "text/javascript" Response.Write str Response.End ElseIf Request.QueryString("act") = "editLog" Then If Len(AccessPassword) > 0 And Session(SessionName) <> AccessPassword Then Call Login() Else Call EditTxtFile() End If Else Response.Clear Response.Redirect Url & "?act=editLog" Response.End End If Function SaveTxtFile() Dim txtcontent Dim tpath txtcontent=Request.Form("log") Dim objStream Set objStream = Server.CreateObject("ADODB.Stream") With objStream .Type = 2 .Mode = 3 .Open .Charset = WebCharset .Position = objStream.Size .WriteText=txtcontent .SaveToFile Server.MapPath(TextFile) ,2 .Close End With Set objStream = NoThing SaveTxtFile=True End Function Function EditTxtFile() response.write "<form method='post' name='editLog' id='sipoedit'>" Dim txtcontent Dim objStream Set objStream = Server.CreateObject("ADODB.Stream") With objStream .Type = 2 .Mode = 3 .Open .Charset = WebCharset .Position = objStream.Size .LoadFromFile Server.MapPath(TextFile) txtcontent=.ReadText .Close End With response.write "<p><input name='submit' type='submit' value='保存' onclick='document.getElementById(""sipoedit"").action="""";'> <input type='button' value='查看报表' onclick='viewReport();'> <input name='reset' type='reset' value='重置' onclick=""document.getElementById('log').style.display='block';document.getElementById('report').style.display='none';""></p>" response.write "<p><textarea name=log id=log style='width:90%;height:350px;' wrap=off>"&txtcontent&"</textarea><div id='report'></div></p>" response.write "</form>" Response.Write "<script language='javascript' type='text/javascript'>" & vbcrlf Response.Write "function viewReport() {" & vbcrlf Response.Write " o=document.getElementById('log');" & vbcrlf Response.Write " o.style.display='none';" & vbcrlf Response.Write " array=o.value.split('\n');" & vbcrlf Response.Write " r=document.getElementById('report');" & vbcrlf Response.Write " r.style.display='block';" & vbcrlf Response.Write " s='<table border=1><tr bgcolor=#FFCC99><td>时间</td><td>广告展示页面</td><td>广告网站</td><td>点击者IP</td><td>页面来源</td><td>用户</td></tr>';" & vbcrlf Response.Write " for(i=0;i<array.length;i++) {" & vbcrlf Response.Write " if(array.length!=0) {" & vbcrlf Response.Write " arr=array.split(',');" & vbcrlf Response.Write " s+='<tr><td>'+arr[0]+'</td><td>'+arr[1]+'</td><td>'+arr[2]+'</td><td>'+arr[3]+'</td><td>'+arr[4]+'</td><td>'+arr[5]+'</td></tr>'" & vbcrlf Response.Write " }" & vbcrlf Response.Write " }" & vbcrlf Response.Write " s+='</table>';" & vbcrlf Response.Write " r.innerHTML=s;" & vbcrlf Response.Write "}" & vbcrlf Response.Write "</script>" & vbcrlf Set objStream = NoThing End Function Function Login() Response.Write "<form method='post' name='login' id='login' action='?act=login'>" Response.Write "<input type='password' name='pwd'> <input type='submit'>" Response.Write "</form>" Response.End End Function %>