如何计算网站访问的有效PV量
为了更好的分析得到的PV量, 使自己由日志文件得到的PV量更接近Google
由日志中统计出的PV量要排除掉如下一些:
- 1. 搜索引擎爬虫过来的
- 2. 中间跳转页面
- 3. 页面中内嵌的页面
- 4. Ajax数据交换使用过的接口页面
- 5. 内部数据接口交互使用的PV
搜索引擎,爬虫这些访问不是用户行为,应该排除
处理方法: 一般有异常IP地址的访问量和UA信息的判断获得,排除这些因素的PV量
中间跳转页面,对用户来说只能看到跳转后的页面信息,之前发起跳转的页面对用户不可见,应该排除
处理方法: 找出设计中存在的跳转页面,排除跳转前的页面或跳转后的页面所汇集的PV量。
最好在业务设计和程序设计时做考虑处理,减少中间页面跳转这类的处理。
这类是使用Frame或Div等形式,嵌在一个页面中的一小块信息,
处理方法:找出这类地址,对其做访问量排除
如果内嵌的是广告信息等,可以考虑单独做分析
这类地址一般用户看不到,应该排除,
处理方法:找出这类的地址,然后在统计量中排除对这些地址的访问,最好在程序设计上将其放到一个目录下,这样可以直接排除对某个目录的访问。
这个不是针对用户的,也应该排除
处理方法:找出这类的地址,然后在统计量中排除对这些地址的访问,最好在程序设计上将其放到一个目录下,这样可以直接排除对某个目录的访问。
注意点: 以上排除项对一些地址会有重复,比如既是搜索引擎的访问,又是内嵌的小页面地址,这样在处理时要注意,以防造成PV量的重复剔除
Popularity: 6% [?]
Related
几种常见WEB日志分析方法中被统计的用户访问量差异产生原因分析
这几天一直根据原始的weblog文件做日志分析,发现如下一些ip访问量和页面访问量方面的问题。
通常我们会用如下的一些工具来做WEB网站访问日志的分析。
- 1. 免费的google/yahoo 分析的ip地址量,访问人次和页面访问量
- 2. awstats 分析出的访问人次和页面访问量
- 3. 自己通过shell脚本做的原始weblog统计得到的ip量和页面访问量
这几者之间方法机制的存在着差别,就需要好好分析一些,提升一下自己在通过方式 3 得到的数据的精确性,同时也有助于发现一些存在的问题。
- 1.google/yahoo是通过页面脚本来做统计,这样就使得那些被浏览器加载并被用户看到的页面被统计到(当然不是绝对的,但基本上就是这样了),而那些在服务器端通过发送 Header Location: /xxxurl 跳转的页面不会被统计,同时那些使用ajax和服务器进行数据交互的访问也不会被统计记录。
- 2.awstats分析的是日志文件,采用方法基本上是基于对日志记录行的 正则表达式 匹配所进行的分析统计。这样一些不被google/yahoo统计的中间页面访问也会被当作pv进入统计。
- 3.自己的方式比较灵活,采用的分析机制基本同于awstats,但是更具有灵活性,自己想怎么分析就怎么分析(当然前提是weblog可以提取那些信息供分析)
工具 | ip量 | 唯一访问者数 | 访问人次 | pv量 |
– | X | X | X | |
awstat | – | X | X | X |
yahoo | X | X | X | X |
注: awstats也有唯一访问数的统计,不过只能在摘要和按月历史统计中才能看到,不能以按天的方式看到,为了方便这边对比看到某一天的数据,我单独以某天的日志做一个配置,得到的按月数据等同于按天。
对几种工具的统计的情况对比(以实际统计中某几天的数据做对比)
统计结果呈现出: ip量 < 唯一人数 < 访问人次
对PV量的统计
google 和 yahoo 差不多, awstats 统计出的 页面数 比google和yahoo统计出来的数量要多出约两倍左右。产生这个现象的原因: google和yahoo都是采用的在页面嵌入脚本的方式,这样统计出来的就都是在用户浏览器上显示的页面,所以他们统计出的结果差不多。和awstat统计结果发生大偏差的原因:
- 1.这个页面有可能是通过中间跳转过来的,被awstats分析了,但是没有浏览器的页面统计脚本执行,不会被google/yahoo记录。
- 2.是在一个页面里面还嵌入了一个另外的页面,对google/yahoo还只是一个页面执行了统计脚本。
- 3.还有就可能是这个页面中忘记放用来统计的js代码。
访问人次:
这个项只有 google和awstas有,其中google得到的人次要比awstats多。这个可以解释为他们用来识别两次访问间的时间间隔不同。google的判断时间间隔小,所以得到的总访问次数多。
唯一人数:
这个的结果是 yahoo < awstats < google
这个结果的不同可能是由于采用了不同的鉴别唯一用户的算法。估计采用了公网ip+ua+内网ip等的不同组合,从而得到的唯一用户数也不同。
IP访问量
这个只有 yahoo 提供,其他方式中没有该项,但是是可以反映出 ip地址量少于 唯一用户数的 。
对方式3自己写shell脚本做分析,在pv上得到的数据和awstats更接近一些,因为所使用的数据源和分析方式类似。
awstats使用缓冲记录运算获得的用户停留时间等信息不好获得,但是可以做出其他的一些按照ip为基准而awstat等工具未提供的统计,比如
- 某个业务模块下的ip访问量
- 只有一次web日志的ip量,有两,三,四次日志记录的ip量,5-10次,10次以上日志记录的ip量等
- 有文件访问但是没有正常网页访问的ip量
- 全部是失败访问确没有成功访问的ip量
- 其他一些 awstats和google/yahoo统计上没有的数据
Popularity: 6% [?]
Related
NotPageList的设置会引起Awstats用户访问量统计发生变化
为了方便业务做分析,给awstats添加了一下 ExtraSection 的设置, 结果隔天同事反映awstats统计的访问用户数量一下子少掉好多。
想想ExtraSection的设置不应该影响到Awstats的访问用户数统计,但是打开看awstats的统计量,pv,文件数都没有什么变化,但确实用户访问量发生了大的变化。
于是努力回想在给Awstats设置ExtraSection的时候,还对awstats配置的什么地方做了改动,终于在对比后想起来是修改了 NotPageList 的设置,将zip, swf, wma 等后缀的也做了NotPageList的过滤。
于是猜想是否由于这个选项的设置变化导致了awstat的统计结果不一样,立马开始做验证,将其中几天的日志转到测试服务器上,建立两个配置,一个NotPageList是使用默认的设置,另外一个NotPageList中添加了额外扩展名的设置。
然后分别对两个配置做 update 后再对数据进行查看比较,发现添加额外的扩展名后,访问用户数变少,网页数的统计有变少,文件数没有太大变化。
结论: NotPageList的设置确实会影响AWSTATS对 访问用户数, 页面数,文件数等的统计结果。
带来的问题: AWstats是怎么计算用户访问数的?
根据以上对比和对其中部分代码的分析有如下一些初步结论:
参与访问用户量分析的只有那些被识别为网页的记录
唯一用户数: 用ip 地址 + ua 信息的组合来识别不同的用户访问
访问人次: 被识别的唯一用户在最后一次页面访问后又间隔一定时间(30分钟?)后再次访问,算是该用户的第二次访问。
根据这个分析回过来看前面由于NotPageList的设置变化而导致的统计用户数上差别的原因就可能是:
网页上有对额外添加的这些扩展名文件的连接,对这些文件的打开采用了不同于浏览器ua的插件或工具打开,造成新的ip+ua的组合和用户正在打开页面的ip+浏览器ua不一样,被awstats识别为一个新的用户访问。
Popularity: 5% [?]
Related
http返回代码的一般含义
因为要做web日志做分析,http的返回代码所代表的意思也要再搞清一下,方便分析。
1XX 代码
这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个1xx 响应
- 100 – 继续
- 101 – 切换协议
2XX 代码
这类状态代码表明服务器成功地接受了客户端请求,一般日志中记录下的应该200的为多
- 200 – 客户端请求已成功
- 201 – 已创建
- 202 – 已接受
- 203 – 非权威性信息
- 204 – 无内容
- 205 – 重置内容
- 206 – 部分内容
3XX 代码
表示重定向,客户端浏览器必须采取更多操作来实现请求,比如 header Location: /anotherurl 这样的命令。
- 302 – 对象已移动
- 304 – 未修改
- 307 – 临时重定向
4XX 代码
表示客户端有问题,比如请求了一个不存在的文件。
- 400 – 错误的请求
- 401 – 访问被拒绝
- 403 – 禁止访问
- 404 – 文件未找到
- 405 – 用来访问页面的HTTP方法不被允许
- 406 – 客户端浏览器不接受所请求页面的 MIME 类型
- 407 – 要求进行代理身份验证
- 412 – 前提条件失败
- 413 – 请求实体太大
- 414 – 请求URI太长
- 415 – 不支持的媒体类型
- 416 – 所请求的范围无法满足
- 417 – 执行失败
- 423 – 锁定的错误
5XX 代码
表示服务器端有问题,比如服务器端内存不足,响应超时等。
- 500 – 内部服务器错误
- 501 – 页眉值指定了未实现的配置
- 502 – Web 服务器用作网关或代理服务器时收到了无效响应
- 503 – 服务不可用
- 504 – 网关超时
- 505 – HTTP 版本不受支持
红颜色的代码是我们经常看到的。
更细的含义这边有一份HTTP返回代码表
Popularity: 5% [?]
Related
根据weblog分析某个业务下的ip访问量
目标:
对日志做分析,获取各个模块的ip访问量。
计划方法:
1. 首先获得符合条件的访问日志记录
2. 对符合条件的记录做排序做uniq得到模块目录下唯一ip列表
3. 再使用uniq 获得各个模块的ip数量
实施步骤:
1. 提取符合条件的日志行,输出ip地址和url
-
cat www.access.log |awk '($7 ~ /\.php/|| $7 ~/\/mod1\//){print $1 " " $7}'
2. 通过sed从url中提取模块目录的名称
-
|sed -e 's/\(^\/[^\/?"]*\).*/\1/'
3. 排序求每个模块下唯一的ip
-
| awk '{print $2 " " $1}' |sort |uniq
4. 对每个模块做统计倒序排列
-
| awk '{print $1}' | uniq -c |sort -nr
合起来:
-
cat www.access.log |awk '($7 ~ /\.php/|| $7 ~/\/mod1\//){print $1 " " $7}' \
-
|sed -e 's/\(^\/[^\/?"]*\).*/\1/' \
-
| awk '{print $2 " " $1}' |sort |uniq
-
| awk '{print $1}' | uniq -c |sort -nr
Popularity: 5% [?]
Related
WEB日志的一般性分析
随着网站正式运行,我们可以通过通用的免费日志分析工具比如awstats获得一些实际访问网站的信息,例如每天ip量,pv量,用户所用的的浏览器,用户所用的操作系统等,但是有时候希望通过手工方式从WEB日志文件中获得一些信息,下面列出了一些最近一段时间我经常在用的命令
获得访问前10位的ip地址
-
cat access.log|gawk '{print $1}' |sort|uniq -c|sort -nr |head -10
访问次数最多的文件或页面
-
cat access.log|gawk '{print $11}'|sort|uniq -c|sort -nr
通过子域名访问次数,依据referer来计算,稍有不准
-
cat access.log | awk '{print $11}' | sed -e ' s/http:\/\///' -e ' s/\/.*//' | sort | uniq -c | sort -rn | head -20
列出传输大小最大的几个文件
-
cat www.access.log |awk '($7~/\.php/){print $10 " " $1 " " $4 " " $7}'|sort -nr|head -100
列出输出大于200000byte(约200kb)的页面以及对应页面发生次数
-
cat www.access.log |awk '($10 > 200000 && $7~/\.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100
如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面
-
cat www.access.log |awk '($7~/\.php/){print $NF " " $1 " " $4 " " $7}'|sort -nr|head -100
列出最最耗时的页面(超过60秒的)的以及对应页面发生次数
-
cat www.access.log |awk '($NF > 60 && $7~/\.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100
列出传输时间超过 30 秒的文件
-
cat www.access.log |awk '($NF > 30){print $7}'|sort -n|uniq -c|sort -nr|head -20
列出当前服务器每一进程运行的数量,倒序排
-
ps -ef | awk -F ' ' '{print $8 " " $9}' |sort | uniq -c |sort -nr |head -20
Popularity: 3% [?]
Related
通过网站日志做网络爬虫和恶意访问分析
今天公司网站系统发生短暂的访问中断,虽然临时性的通过重启网站服务达到正常运作的目的,但是后续的分析工作还是要做的。
首先使用命令
-
cat www.access.log |grep spider -c
和
-
cat www.access.log |wc
分别查看有爬虫标志的访问次数和合计的总页面访问次数,发现还有爬虫标志的访问次数超过总访问次数的 10%, 访问显得有些不正常。
使用
-
cat www.access.log |grep spider|awk '{print $1}'|sort -n|uniq -c|sort -nr
命令查看爬虫来ip地址来源,发现主要来至于 124.115.4.*和124.115.0.* 这两个地址段。
在防火墙上对其地址做限制。
/etc/sysconfig/iptables 中添加规则
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -s 124.115.0.1/24 -j REJECT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -s 124.115.4.1/24 -j REJECT
service iptables restart 使限制生效
一些已知的爬虫可以在 http://www.wangzhongyuan.com/archives/367.html 看到。可以针对自己的情况做一下分析处理,有选择性的让一些爬虫来访问。当然这个地址列出的都是一些比较有名的爬虫,如Googlebot, Baiduspider,Sogo,Yahoo等都是比较上规矩的,对他们可以通过robots.txt进行爬虫访问规则的设置,而那些较稀奇的比如这里列出的 Sosospider等就没有被列出,所以更多的小爬虫和恶意的访问还是要自己来具体分析处理的。
从网站日志文件中找出爬虫和恶意访问
一般可以对网站访问日志做分析,通过分析单位时间里面某个ip访问服务器的次数等信息来找出爬虫的来源地址和恶意访问的来源地址,比如通过
-
cat www.access.log |awk '{print $1 " " substr($4,14,5)}'|sort -n|uniq -c|sort -nr|head -20
这么一个命令就可以列出在一分钟内访问网站次数最多的前20位ip地址。
而通过
-
cat www.access.log |grep 60.190.128.6 |awk '{print $1 " " substr($4,14,5)}'|sort -n|uniq -c|sort -nr|head -20
这个命令则可以查看一天中某个ip地址对网站服务器的访问时间分段情况。
对这些命令中表现出的数量比较突出的一些ip地址,一般来说就是有问题的ip了,在配合
-
cat www.access.log |grep ip地址
可以看看这些高强度的地址访问都在干些什么。是不是正常访问,如果不是就要考虑是否要做限制了。
Popularity: 3% [?]