欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

为wap网站加入google analysis之ruby on rails版本

程序员文章站 2023-12-26 20:26:51
...

大家都知道,google analysis可以帮助我们分析网站的流量等信息。

但是问题是,google analysis的追踪代码是基于js的,有些浏览器,比如有些手机浏览器不支持js,而且不能统计到wap网站的流量。

尽管google考虑到了这一情况,并且提供了工具,比如在“Analytics(分析)设置 - 配置文件设置 - 检查状态 - 跟踪代码 - 高级”中选择“针对手机创建的网站”就可以获得一段代码来统计wap网站的流量信息,不过遗憾的是当前只支持:PHP Perl,JSP,ASPX。

博聆网 是用ruby on rails写的,所以研究了一下google analysis的追踪原理(原理请参考http://www.biaodianfu.com/google-analytics-architecture.html 这篇文章)

原理大概是这样:当我们访问带有Google
Analyitcs追踪代码的页面时,页面中的GA追踪代码被执行,然后会向Google服务器发送一个1像素的图片请求。
(http://www.google-analytics.com/__utm.gif
)并将所收集到的数据作为请求__utm.gif图片链接的变量一起发送回google服务器。然后经过google服务器的处理发布到我们的数据报告里。
并且通过在“Analytics(分析)设置 - 配置文件设置 - 检查状态 - 跟踪代码 -
高级”中选择“针对手机创建的网站”,中选择php语言,查看给出的php例子,发现确实是这样的。只要向http://www.google-analytics.com/__utm.gif 请求这个图片,在url里面加上参数,google analysis就可以分析了。

所以写了这个ruby版本的:

首先,定义helper

    def img_for_google_analysis
        params_for_analysis={}
	      params_for_analysis["utmn"] = rand(0x7fffffff)
	      params_for_analysis["utmr"] = request.headers['Referer']||'-'
	      params_for_analysis["utmhn"] = request.host
	      params_for_analysis["utmp"] = request.fullpath
	      params_for_analysis["utmac"] = 'MO-XXXXX-X' #这个是google analysis的帐号,要把里面的UA替换成MO,表示是手机网站。
	      params_for_analysis["utmwv"] = "4.4sh"
        params_for_analysis["utmcc"] = '__utma=999.999.999.999.999.1;'
	      if request.remote_ip.blank?
	        params_for_analysis["utmip"] = ""
	       else
	        params_for_analysis["utmip"] = (request.remote_ip.split(".")[0,3]<< "0").join(".")
	      end
	      if cookies["__utmmobile"]
		      guid =  cookies["__utmmobile"]
	      else
	        guid = request.headers['HTTP_X_DCMGUID']	|| request.headers['HTTP_X_UP_SUBNO']	||  request.headers['HTTP_X_JPHONE_UID']	|| request.headers['HTTP_X_EM_UID']	
	      end
        if guid
		      message = guid + params_for_analysis["utmac"]
	      else
		      message = rand(0x7fffffff).to_s
        end
	        cook = Digest::MD5.hexdigest(message)
		      cookies["__utmmobile"] = params_for_analysis["utmvid"] = "0x" +cook[0,16]
		      ppp=""
		      params_for_analysis.each_pair do |index , value |
		        ppp<<"#{index}=#{value}&"
		      end
       return   "http://www.google-analytics.com/__utm.gif?"+URI.encode(ppp)
    end

  注意,helper文件里要

require 'digest/md5'

 因为使用到了

Digest::MD5.hexdigest()这个方法

然后在layout里面引入这个img图片就可以了

%img{:src=>img_for_google_analysis,:alt=>""} 
 



ok!

 

上一篇:

下一篇: