关于网站指标:计算忽略搜索引擎的页面的浏览量?

关于网站指标:计算忽略搜索引擎的页面的浏览量?

Counting number of views for a page ignoring search engines?

我注意到 StackOverflow 对每个问题都有一个查看次数,而且这些查看次数相当低且准确。

我的一个网站上有类似的东西。每当页面在后端代码中加载时,它基本上都会记录一个"命中"。不幸的是,它也会为搜索引擎命中提供臃肿和不准确的数字。

我想不计算机器人的一种方法是在页面加载后使用 AJAX 调用进行视图计数,但我确信还有其他更好的方法来忽略您的点击中的搜索引擎计数器,同时仍然让他们抓取您的网站。你知道吗?


AJAX 调用会执行此操作,但通常搜索引擎不会加载图像、javascript 或 CSS 文件,因此在页面中包含这些文件之一可能更容易,并传递您要登录的页面的 URL作为文件请求中的参数的请求。

例如在页面中...

http://www.example.com/example.html

您可以在头部部分中包含

1
link href="empty.css?log=example.html" rel="stylesheet" type="text/css" /

让您的服务器端记录请求,然后返回一个空的 css 文件。相同的方法适用于 JavaScript 或图像文件,但在所有情况下,您都需要仔细查看可能发生的缓存。

另一种选择是消除基于用户代理的搜索引擎。在 http://user-agents.org/ 上有一大堆可能的用户代理可以帮助您入门。当然,你也可以换一种方式,只计算来自你知道的网络浏览器的请求(包括 IE、Firefox、Safari、Opera 和这个新奇的 Chrome 东西可以让你达到 99%)。

使用 awstats 之类的日志分析工具或 Google 分析之类的服务更简单,这两者都已经解决了这个问题。


为了解决这个问题,我实现了一个简单的过滤器,它会查看 HTTP 请求中的 User-Agent 标头并将其与已知机器人列表进行比较。

我从 www.robotstxt.org 获得了机器人列表。它可以以简单的文本格式下载,可以轻松解析以自动生成"黑名单"。


对 Matt Sheppard 的回答的扩展可能类似于以下内容:

1
2
3
4
5
6
  script type="text/javascript"
  var thePg=window.location.pathname;
  var theSite=window.location.hostname;
  var theImage=new Image;
  theImage.src="/test/hitcounter.php?pg=" + thePg +"?site=" + theSite;
  /script

可以插入页面 Header 或页脚模板,而无需在服务器端替换页面名称。请注意,如果您包含查询字符串 (window.location.search),则其强大的版本应对该字符串进行编码,以防止作恶者利用基于 URL 中奇怪内容的漏洞制作页面请求。与常规 img 标记或 iframe 相比,它的好处是,如果 hitcounter 脚本有问题,用户不会看到红色 x。
在某些情况下,在服务器端发生重写等之前,了解浏览器看到的 URL 也很重要,这给了你。如果你想要这两种方式,那么添加另一个参数 server-side 将该版本的页面名称也插入到查询字符串中。

来自本页测试的日志文件示例:

1
2
10.1.1.17 - - [13/Sep/2008:22:21:00 -0400]"GET /test/testpage.html HTTP/1.1" 200 306"-""Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16"
10.1.1.17 - - [13/Sep/2008:22:21:00 -0400]"GET /test/hitcounter.php?pg=/test/testpage.html?site=www.home.***.com HTTP/1.1" 301 -"http://www.home.***.com/test/testpage.html""Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16"

您实际上不需要使用 AJAX,只需使用 JavaScript 在屏幕外添加 iFrame。保持简单

1
2
3
script type="javascript"
document.write('iframe src="myLogScript.php" style="visibility:hidden" width="1" height="1" frameborder="0"');
/script

您将不得不使用 AJAX 执行您在问题中所说的内容。或者排除已知搜索引擎的用户代理字符串。阻止机器人的唯一可靠方法是使用 AJAX。


Stack Overflow 有准确的观看次数的原因是它只计算每个观看次数/用户一次。

第三方点击计数器(和网络统计)应用程序通常会过滤掉搜索引擎并将它们显示在单独的窗口/选项卡/部分中。


推荐阅读

    linux网站根目录命令?

    linux网站根目录命令?,系统,一致,设备,网站,目录,根目录,信息,标准,位置,电

    linux设备加载命令?

    linux设备加载命令?,系统,设备,信息,电脑,第一,命令,文件,分区,磁盘,详细信

    linux的数学计算命令?

    linux的数学计算命令?,工作,系统,信息,地址,数字,目录,命令,百分比,情况,管

    linux网卡加载命令行?

    linux网卡加载命令行?,系统,地址,代码,网络,设备,电脑,名称,网卡,技术指标,

    linux命令刷新加载?

    linux命令刷新加载?,系统,下来,工具,网上,命令,终端,环境变量,以下,文件,路

    linux访问网站的命令?

    linux访问网站的命令?,地址,系统,服务,工作,网站,命令,网络,管理,信息,网址,L

    linux云计算查看命令?

    linux云计算查看命令?,系统,信息,地址,工作,命令,情况,标准,服务,软件,网络,l

    linux打开计算器命令?

    linux打开计算器命令?,密码,电脑,工作,设备,数字,系统,手机,指数,情况,服务,

    linux命令输出计算?

    linux命令输出计算?,标准,地址,工作,信息,系统,命令,软件,数据,文件,控制台,l

    加载linux内核的命令?

    加载linux内核的命令?,系统,信息,地址,电脑,发行,设备,简介,平台,发展,基础,l

    linux加载没有的命令?

    linux加载没有的命令?,系统,服务,工具,信息,设备,标准,工作,命令,检测,代码,

    linux计算总数命令?

    linux计算总数命令?,系统,第一,情况,数据,信息,电脑,命令,百分比,单位,工作,l

    linux中计算器命令?

    linux中计算器命令?,地址,数据,位置,网络,设备,时间,环境,平台,软件,命令,说

    linux命令行登陆网站?

    linux命令行登陆网站?,网站,系统,密码,服务,地址,环境,网络,软件,状态,项目,

    linux退出计算器命令?

    linux退出计算器命令?,工作,地址,系统,命令,通信,信息,电脑,目录,路径,操作,

    重启计算机linux命令?

    重启计算机linux命令?,系统,设备,工作,标准,名称,命令,状态,数据,服务,提示,L

    linux登陆网站命令?

    linux登陆网站命令?,网络,工具,网站,标准,地址,软件,系统,命令,数据,环境,lin

    linux命令打开网站?

    linux命令打开网站?,网络,网站,系统,地址,密码,传播,工具,代码,环境,命令,大

    linux计算器打开命令?

    linux计算器打开命令?,工作,地址,命令,标准,管理,系统,目录,路径,管道,控制

    加载变量的linux命令?

    加载变量的linux命令?,工具,系统,名称,环境变量,环境,命令,用户,文件,变量,