我的网站在某些页面上统计访问者的浏览量。我注意到Google和其他Bot疯狂地“点击”了我的网站,并且某些页面的观看次数不切实际(与人工制作的页面相比)。我认为那些机器人很重要。很明显,一个简单的“用户代理”包含“机器人”是不会做的。

我认为没有解决方案,也不需要。

注意:我正在使用PHP + MySQL。

评论

问题的正确答案取决于用于跟踪统计信息的软件类型。

@Goboozo我正在使用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来生成视图计数器。而不是直接输出计数器,而是输出类似于'