
Counting number of views for a page ignoring search engines?我注意到 StackOverflow 对每个问题都有一个查看次数,而且这些查看次数相当低且准确。 我的一个网站上有类似的东西。每当页面在后端代码中加载时,它基本上都会记录一个"命中"。不幸的是,它也会为搜索引擎命中提供臃肿和不准确的数字。 我想不计算机器人的一种方法是在页面加载后使用 AJAX 调用进行视图计数,但我确信还有其他更好的方法来忽略您的点击中的搜索引擎计数器,同时仍然让他们抓取您的网站。你知道吗? AJAX 调用会执行此操作,但通常搜索引擎不会加载图像、javascript 或 CSS 文件,因此在页面中包含这些文件之一可能更容易,并传递您要登录的页面的 URL作为文件请求中的参数的请求。 例如在页面中... http://www.example.com/example.html 您可以在头部部分中包含
让您的服务器端记录请求,然后返回一个空的 css 文件。相同的方法适用于 JavaScript 或图像文件,但在所有情况下,您都需要仔细查看可能发生的缓存。 另一种选择是消除基于用户代理的搜索引擎。在 http://user-agents.org/ 上有一大堆可能的用户代理可以帮助您入门。当然,你也可以换一种方式,只计算来自你知道的网络浏览器的请求(包括 IE、Firefox、Safari、Opera 和这个新奇的 Chrome 东西可以让你达到 99%)。 使用 awstats 之类的日志分析工具或 Google 分析之类的服务更简单,这两者都已经解决了这个问题。 为了解决这个问题,我实现了一个简单的过滤器,它会查看 HTTP 请求中的 User-Agent 标头并将其与已知机器人列表进行比较。 我从 www.robotstxt.org 获得了机器人列表。它可以以简单的文本格式下载,可以轻松解析以自动生成"黑名单"。 对 Matt Sheppard 的回答的扩展可能类似于以下内容:
可以插入页面 Header 或页脚模板,而无需在服务器端替换页面名称。请注意,如果您包含查询字符串 (window.location.search),则其强大的版本应对该字符串进行编码,以防止作恶者利用基于 URL 中奇怪内容的漏洞制作页面请求。与常规 来自本页测试的日志文件示例:
您实际上不需要使用 AJAX,只需使用 JavaScript 在屏幕外添加 iFrame。保持简单
您将不得不使用 AJAX 执行您在问题中所说的内容。或者排除已知搜索引擎的用户代理字符串。阻止机器人的唯一可靠方法是使用 AJAX。 Stack Overflow 有准确的观看次数的原因是它只计算每个观看次数/用户一次。 第三方点击计数器(和网络统计)应用程序通常会过滤掉搜索引擎并将它们显示在单独的窗口/选项卡/部分中。 |