如何处理机器人以计算页面浏览量

5
我不知道如何处理这种情况。我有一个目录,用于为每个项目计算页面浏览量。对于经过身份验证的用户,只有在请求之间有200秒的延迟后才会计算为新的页面浏览量。对于未经身份验证的用户,我使用IP地址,并且也需要200秒的延迟。
我使用 Redis SETEX 进行验证,然后键将在 200 秒后过期。如果该键不存在,则插入一个新的页面浏览量。
类似这样:
- item_id:user_id (已认证的用户) - item_id:ip (未认证的用户)
嗯,这很好地运作,直到有人试图故意增加特定项目的页面浏览量。昨天仅一个项目就有接近3000次浏览(去年页面仅有150次浏览……)。所以,他创建了一些机器人来访问页面以避免我的验证。
我需要注册合法的页面浏览量,但我需要避免这种欺诈行为。有什么办法吗?

这个问题非常主观,不太适合在Stack Overflow上提问。 - Rolf ツ
然而:您可以通过改变“页面浏览”的定义来避免欺诈。一些著名的页面浏览测量工具,如Google Analytics,使用超时功能来避免重复页面浏览,但同时显示诸如独特点击(不计算会话内的重复点击)等其他流量信息,此外它们还记录其他流量信息,例如用户代理,这通常可以用于避免某些(搜索)机器人。然而,如果没有人类验证系统(如验证码),防止垃圾邮件将非常困难,甚至是不可能的,因为机器人很容易假装成人类。 - Rolf ツ
你对欺诈的定义是什么?你创建了一个规则,过滤掉少于200秒的请求,但似乎这不是区分“欺诈”和“合法”观点的规则。 如果您确切地指定了“欺诈”的定义,您可以设计一个适当的过滤器,例如:每小时最多2次观看,每天最多4次,每月最多8次。 - Tom
@TomLankhorst 目前我还没有针对欺诈行为的确切定义。但当我在日志中看到每隔 X 秒就有一次请求时,我知道这不是真实用户的正常行为。不过,确定这些请求是否连续以及是否按标识分组并不容易制定一条规则。 - anvd
4个回答

2
据我所知,处理机器人的最佳方式是像Google Analytics一样的方式。
Google Analytics通过将JavaScript片段插入到您网站的头部来工作。每当访问者触发该JavaScript时,该片段就会计算页面浏览量,而大多数机器人不会处理JavaScript。

这不是一个选项。我只想要像stackoverflow一样的东西来计算页面浏览量。 - anvd
在SO中,计数的度量单位是IP地址。您可以在登录后和注销后查看您的问题页面并查看结果。 - Ali Soltani

0
你可以在应用程序中集成某种类型的验证码,以限制用户在特定时间内查看页面的次数。
在给定时间段内(例如,在3分钟内查看20次),如果来自同一用户或IP的浏览次数达到设定值,则需要在每次尝试查看页面时验证验证码。

0

为每个页面视图请求发出一个Token。将令牌存储在Cookie中。

使用您已有的IP或USER_ID作为过滤机制。

页面加载后,使用来自Cookie的tokenold_token操作系统浏览器名称IP / User_ID来验证请求。

给出两个不同的时间,如200秒的过期时间和3600秒的宽限时间,如果上述任何数据在宽限时间内匹配,则不计算页面视图。

您还可以通过跟踪宽限时间内的页面视图并创建一些方法来验证页面视图请求来扩展此功能。


0

我通常在请求时间一起记录请求,以测量特定时间段内的访问频率和访客计数。
当您注册所有带有item_iduser_idiptimestamp的请求后,您可以通过user_idiptimestamp对注册信息进行分组处理。
这样,您就可以找出每秒的点击次数,并识别和排除那些远远超过正常活动模式而不会失去数据的人。

通常,我使用Web服务日志来生成有关每小时、每天甚至每月访问特定网址的统计信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接