1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

Google Adsense Click Logger

本帖由 小叶2005-12-26 发布。版面名称:网站运营

  1. 小叶

    小叶 New Member

    注册:
    2005-09-04
    帖子:
    17,941
    赞:
    33
    代码:
    <%@ 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="""";'>&nbsp;&nbsp;&nbsp;<input type='button' value='查看报表' onclick='viewReport();'>&nbsp;&nbsp;&nbsp;<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'>&nbsp;<input type='submit'>"
      Response.Write "</form>"
      Response.End
    End Function
    %>
     
  2. wanna

    wanna New Member

    注册:
    2005-09-18
    帖子:
    54
    赞:
    0
    干么滴?
    偶不懂
     
  3. wanna

    wanna New Member

    注册:
    2005-09-18
    帖子:
    54
    赞:
    0
    小叶
    转贴机器人
    注册日期: 2005-09-04
    帖子: 7,228
    声望力: 153

    偶对你的敬仰之情,如滔滔江水,连绵不绝~~~~~~~~~~
     
  4. 小叶

    小叶 New Member

    注册:
    2005-09-04
    帖子:
    17,941
    赞:
    33