Algorithm 如何处理bot来计算页面浏览量

Algorithm 如何处理bot来计算页面浏览量,algorithm,automation,bots,Algorithm,Automation,Bots,我不知道该如何处理这种情况。我有一个目录,在那里我计算每个项目的页面浏览量。对于经过身份验证的用户,在请求之间延迟200秒后,我只将其视为新的页面视图。对于未经验证的用户,我使用IP和200秒的延迟 我使用redis SETEX进行验证,然后密钥将在200秒后过期。如果密钥不存在,则插入新的页面视图 像这样的 item\u id:user\u id(经过身份验证的用户) 项目标识:ip(未经身份验证的用户) 好吧,除非用户有意增加某个特定项目的页面浏览量,否则这种方法很有效。就在昨天,我对一

我不知道该如何处理这种情况。我有一个目录,在那里我计算每个项目的页面浏览量。对于经过身份验证的用户,在请求之间延迟200秒后,我只将其视为新的页面视图。对于未经验证的用户,我使用IP和200秒的延迟

我使用redis SETEX进行验证,然后密钥将在200秒后过期。如果密钥不存在,则插入新的页面视图

像这样的

  • item\u id:user\u id
    (经过身份验证的用户)
  • 项目标识:ip
    (未经身份验证的用户)
好吧,除非用户有意增加某个特定项目的页面浏览量,否则这种方法很有效。就在昨天,我对一个特定项目的浏览量接近3000次(去年该页面只有150次浏览量…)。因此,他创建了一些机器人来延迟访问页面,以避免我的验证


我需要注册合法的页面浏览量,但我需要避免这种类型的欺诈。有什么想法吗

您可以在应用程序中集成某种验证码,以限制用户在特定时间内查看页面的次数


在给定的持续时间内,来自同一用户或IP的一定数量的视图(例如,3分钟内20个视图),让他们在以后每次尝试查看页面时验证验证码。

据我所知,处理机器人程序的最佳方法是类似Google Analytics的方法

Google Analytics通过将JavaScript片段插入到 你网站的标题。此代码段统计每次 访问者触发了JavaScript,而大多数机器人都不会处理 JavaScript


为每个页面查看请求发出
令牌
。将令牌存储在Cookie中

使用您已经可用的IP或用户ID作为筛选机制

加载页面后,使用cookie中的
令牌
旧令牌
、操作系统、
浏览器名
IP
/
用户ID
验证请求

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


您还可以通过在宽限期内跟踪页面浏览量来扩展此功能,并创建一些方法来验证页面浏览请求。

我通常将请求时间与请求一起注册,以测量访问频率和每特定时间跨度的访问者数。
当您注册所有与
项目id
用户id
ip
时间戳一起出现的请求时,您可以随后通过按
用户id
ip
时间戳对寄存器进行分组来处理
这样,您就可以找出每秒的点击量,识别并排除那些明显超过正常活动模式的人,而不会丢失数据。


我经常使用Web服务日志每小时、每天甚至每月生成有关特定URL访问频率的统计信息。

这个问题非常固执,并不完全适合堆栈溢出。不过,您可以通过更改“页面视图”的定义来避免欺诈。一些著名的页面浏览量测量工具(如Google Analytics)使用超时来避免重复页面浏览,但也会显示独特点击(不包括会话中的重复点击),除此之外,它们还记录其他流量信息,如用户代理,通常可用于避免某些(搜索)机器人。然而,防止垃圾邮件是非常困难的,如果不是不可能的话,因为机器人可以很容易地伪装成人类,除非你建立了一些人类验证系统,比如验证码。你对欺诈的定义是什么?您已经创建了一个规则来过滤相隔不到200秒的请求,但这似乎不是一个区分“欺诈”和“合法”视图的规则。如果您确实指定了“欺诈”定义,您可以设计一个合适的过滤器,例如:最多2次/小时、最多4次/天、最多8次/月。@TomLankhorst目前我没有欺诈的确切定义。但当我每X秒在日志中看到一个请求时,我知道这对于真正的用户来说不是正常的行为。但是,要创建一个规则来确定请求是否连续并按标识分组并不容易,这不是一个选项。我只想知道stackoverflow必须计算PageViews,因此,计算的标准是IP地址。您可以在两种状态下(登录后和注销后)检查问题页面并查看结果。