我的记录显示我的网站的特定页面在7月2日到11月15日期间被访问了609次.
Google Analytics在此期间仅报告238次网页浏览量.
我无法解释这种差异.
要让Google Analytics跟踪网页浏览事件,客户端浏览器必须启用JavaScript并能够访问Google的服务器.我怀疑60%的访问者已禁用JavaScript或防火墙到Google的跟踪服务器的出站流量.
你有什么解释吗?
我的应用程序只是将记录放入数据库中,因为它提供了一个页面.
它没有做任何事情来区分机器人观察者和人类.
这种差异几乎肯定来自爬行者.对于爬虫流量来说,10倍的用户流量并非闻所未闻.
也就是说,有一种非常简单的方法来验证发生了什么:添加一个ASPX页面,它向您网站上的每个页面发送一个不可缓存的1x1像素清晰GIF图像(也就是"网络错误"),并包含一个引用该页面的IMG标记您网站上每个页面上的图片(例如页眉或页脚).然后解析您的日志以查看该图像的匹配,查看图像调用上的查询字符串参数(例如"referrer ="),以便您知道网页浏览的实际URL.
由于爬虫和其他机器人不会拉图像(好吧,谷歌图像会,但IMG标签中的图像大小不是1x1像素!),您将获得更准确的综合浏览量.在幕后,大多数分析软件(包括Google Analytics)使用类似的方法 - 除了他们使用javascript来构建图像URL并动态地生成图像请求.但是,如果您使用Fiddler观看在使用Google Analytics的网站上发出的HTTP请求,您会看到从www.google-analytics.com返回的1px GIF.
这些数字不会完全对齐(例如,通过后退按钮快速取消导航的用户可能已经下载了一个图像而不是另一个图像),但您应该看到大致相似的结果.如果不这样做,那么您可能无法在所有网页上正确设置Google Analytics.
这是一个说明该技术的代码示例.
在标题中(注意随机数以防止缓存):
" hspace="0" vspace="0" border="0" alt="pageview check">
图像生成器,PageviewImage.aspx:
private void Page_Load(object sender, System.EventArgs e) { Response.ContentType="image/gif"; string filepath = Server.MapPath ("~/images/clear.gif"); Response.WriteFile(filepath); }
顺便说一句,如果您需要图像文件本身,请从此处执行另存为.
这当然不能替代像Googles这样的"真实"分析系统,但如果你只想进行交叉检查,上面的方法应该可行.