如何以编程方式检测机器人

如何以编程方式检测机器人

我们遇到过这种情况:我们记录访问量和访客的页面点击量,但机器人堵塞了我们的数据库。我们不能使用验证码或其他类似的技术,因为这是在我们要求人工输入之前进行的,基本上我们记录的是页面点击量,我们只想记录人类的页面点击量。

有没有已知机器人 IP 列表?检查已知机器人用户代理有用吗?

答案1

有几个要素需要追求这一点。

用户代理字符串是一个值,但它很容易被欺骗。

我发现一个合理有用的启发式方法是进行一些预处理,然后查看流量:

解析您的访问日志,添加主机、ASN、CIDR 和 ASN 名称信息。将 URL 子集化为非变体部分(一般删除“?”之后的所有内容,但 YMMV)。如果您有特定的搜索或实用程序页面,请重点关注这些页面(通常我见过机器人使用某种用户验证服务或搜索时出现问题)。

寻找流量大的单个 IP。

查找具有大量流量的单个 CIDR 块或 ASN。

排除合法的搜索流量(Google、Bing、Yahoo、百度、Facebook 和类似的机器人/网络空间)。这可能是您持续维护的较大领域之一,这些内容一直在变化。

排除合法的用户流量。特别是对于您网站的高流量用户。

确定最终用户和搜索机器人的正常使用模式。如果典型用户每分钟访问 1-3 个页面,典型会话时间为 5-10 分钟,而 Googlebot 限制自己每分钟搜索 10 次,而您突然看到单个 IP 或 CIDR 块每分钟有数百或数千次搜索,那么您可能已经找到了问题所在。

调查高流量/高影响(负面意义)流量的来源。 WHOIS 查询通常会显示这是某种托管空间 - 通常不会看到大量合法用户流量。模式可能出现在用户代理字符串、请求 URL、引荐来源字符串等中,这些模式会提示您注意其他模式。

如果您最终需要进行大量 WHOIS 查询,缓存 whois 客户端可能会提供很大帮助,既可以加快流程,又可以避免注册商的速率限制/节流(出于某种原因,他们不喜欢实体进行数千次重复/自动查询)。您可能可以直接联系注册商获取更多信息,但我没有这样做。

对各种信誉数据库(垃圾邮件查询、SenderBase,现在 Google 也有一些类似的产品)的检查也可能证实网络空间监管不力。

我很想说我有一些东西可以卖给你,但我主要用的是一些 awk 和其他工具来整合这些。它会在一台普通的工作站上一分钟左右解析一百万行日志(加上一些准备工作来准备 IP 和 ASN/CIDR 信息的哈希值)。虽然不是完全自动化的,但它能让我花几分钟就能对问题有一个大致的了解。

答案2

我认为从系统管理员的角度来看,来自单个 IP 的定期重复点击可能表明存在机器人。您只需解析日志即可找到它。

我可能首先会过滤掉命中次数较多的 IP。然后用这些命中次数填充一个数组,并可能查看这些命中间隔的标准差。

此类解决方案的显著优势在于,如果您是一名全职管理员,则可以写一些相当有趣的东西;-)

答案3

通过谷歌快速搜索发现本网站。这可能是一个很好的起点。

仅检查用户代理可能还不够,因为用户代理很容易被伪造。

答案4

实际上,现在有一项新技术可以大规模对抗机器人。这对程序化媒体购买者很有帮助。它被称为设备指纹识别,它基本上取代了基于 cookie 的访客跟踪。其背后的前提是,欺诈者经常使用 cookie,并且 IP 地址也可以通过 VPN 更改。另一方面,指纹对于设备、IP 和 GEO 来说仍然是唯一的,无法更改。有几个网站提供此解决方案 -欺诈追捕网CPA 侦探以及 Distil — 仅举几个例子。

这项技术当然有其局限性。如果你不想深入研究并安装其他工具,你可以在 GA 中消除机器人。以下是一些你绝对应该阻止的已知机器人域

darodar.com(及各种子域名) econom.co ilovevitaly.co semalt.com(及各种子域名) buttons-for-website.com see-your-website-here.com

相关内容