我认为没有解决方案,也不需要。
注意:我正在使用PHP + MySQL。
#1 楼
我很高兴您知道不会有防弹方法来完成此任务。这意味着您的观点至少是现实的。由于没有JavaScript的选择,我想告诉您:
检查用户代理是否其中的“机器人”一词。这将捕获其中的大多数。
编译已知机器人的列表,并根据某种唯一标识符(可能是用户代理)对其进行过滤。
在网站的页脚中放置一个隐藏链接,以链接到收集用户代理和/或IP地址的页面。用户看不到,但机器人会看到。因此,访问该页面的任何人都将成为机器人。记录它们,然后将其从您的统计信息中屏蔽。
评论
这看起来很有希望。我喜欢陷阱的想法。对于用户站点上的用户评论,我使用不可见的输入字段(而不是丑陋的验证码)做了类似的操作。 :-)
–艾斯堡
2011年4月7日在14:22
@eisberg,它被称为蜜罐。我本人是他们的忠实粉丝。
–John Conde♦
2011年4月11日在16:09
可能是最好的解决方案...
–vkGunasekaran
2014年3月17日在7:17
#2 楼
有三种相当简单的方法:使用Google Analytics(分析),它将为您处理和处理所有数据,并为您提供访问者及其访问网站的详细统计信息。这是迄今为止最简单的解决方案。
使用Java脚本进行计数。页面加载后,向计数脚本生成AJAX请求。机器人和蜘蛛不会运行Javascript。
在用户代理字符串中检测“ bot”实际上是相当可靠的。另外,您可以只使用Googlebot,Yahoo,MSNbot等已知的漫游器。检查这三个漫游器应该可以覆盖您的漫游器流量的99%。此页面还有其他页面,但看起来已经过时了。
更新:最近,Googlebot和一些主要的bot都运行JavaScript。因此,仅使用选项#2不再可行。但是,这确实意味着将其与#3结合使用应该非常可靠,因为您可以使用JS轻松排除大多数机器人,然后在服务器端排除运行JS的主要机器人(例如Googlebot)。
也如评论中所述,您可以尝试使用Google Analytics(分析)API来显示每个页面的视图。
评论
1和2与我的问题无关。也许我应该问过“我如何获得一个像stackechange这样的视图计数器而忽略了机器人?”所以我的错:-)尽管如此,在3中的清单还是很不错的。谢谢,我会检查一下。
–艾斯堡
2011年4月5日在17:48
抱歉,没有意识到您正在页面上显示视图计数。在这种情况下,2和3都是可行的。
–心怀不满的山羊
2011年4月5日23:50
谢谢您的努力。至少对我来说,javascript永远无法解决问题,因此我坚持使用3,但指标太多了:-(
–艾斯堡
2011年4月6日7:06
实际上,某些机器人确实运行一些JavaScript。我设置了一个Ajax请求来跟踪与屏幕尺寸相关的视口尺寸。 Googlebot报告了两种不同的屏幕尺寸。
–毒药
13年15月15日23:53
我知道这个问题很旧并且已经有解决方案,但是如果只显示人类意见计数器,为什么不使用Google Analitycs API? stackoverflow.com/questions/19484009/…
– KeizerBridge
16年4月9日在12:26
#3 楼
如果您使用Javascript来计算观看次数,则大多数漫游器都不会运行它,因此不会包含在观看次数中。这个答案可能接近您想要的https://stackoverflow.com/questions/1973448/how-can-i-count-a-page-views评论
不,我不使用Javascript。这是一个正常的PHP + MySQL网站。但是仍然感谢您的回复:-)
–艾斯堡
2011年4月5日13:40
不要这么快打折这个答案。即使使用PHP + MySQL的站点,也无法阻止您发出一些JavaScript来生成视图计数器。而不是直接输出计数器,而是输出类似于'
评论
问题的正确答案取决于用于跟踪统计信息的软件类型。@Goboozo我正在使用PHP + MySQL。这不是为了跟踪我的统计信息。这是关于“相关”,“热门”和“有趣”条目的查询。