【问题标题】:PHP Detecting bot-like behaviorPHP 检测类似机器人的行为
【发布时间】:2009-11-19 20:34:48
【问题描述】:

我正在尝试构建一个仅在检测到类似机器人的行为时向用户显示验证码的系统。以下是当有人填写联系表时我目前正在寻找的行为...

  1. 页面加载后提交表单的速度(如果是 5 秒或更短,则几乎人道地无法填写)

  2. 过去一小时(限制 15 次/小时)或一天(限制 25 次/天)内进行了多少次联系尝试

  3. 检查邮件内容中的链接,并对照过去一天最近包含的其他链接交叉检查链接

  4. 检查垃圾邮件关键字


我将在这里添加有用的社区解决方案:


在没有 CAPTCHA 帮助的情况下,PHP 可以帮助检测到哪些其他行为表明机器人可以帮助检测(不想使用 JS,因为它可以被关闭)?

【问题讨论】:

  • 如果页面上有任何图像/CSS,机器人加载它们的可能性较小
  • 你的意思是如果我在页面上有图片/css,机器人甚至不会加载页面?大多数页面不是至少有css吗?
  • 我认为他的意思是他们不会加载图像/css
  • 页面有几年了,不知道蜜罐的方式还能用吗?

标签: php spam-prevention robot


【解决方案1】:

一个非常简单的(一些更高级的机器人不会喜欢这个,但许多基本机器人会) - 以普通用户不可见的形式放置一个虚假字段(作为备份,也许与一个通常不可见的标签“不要在这里输入任何东西”)。如果提交时字段中有内容,则很可能是机器人。

【讨论】:

  • 对,我真的听说过...“蜜罐”...如果有人感兴趣,请编辑我的问题并添加链接
【解决方案2】:

我相信您可以与您的 robots.txt 文件协调,并确定它是否被用户点击,这将允许您跟踪请求者的 ip/时间戳,这将使普通用户看起来不太可能会看到你的robots.txt 文件。

因为大多数机器人会检查您的 robots.txt 文件(可能是目录结构等)。

【讨论】:

  • 我认为他希望阻止那些冒充人类并具有不正当犯罪意图的机器人,并且不要检查 robots.txt。
  • 你能做到吗?我不知道这是否可能,但如果你能描述它,或者提供一个链接,这是个好主意
  • 一些机器人可能会检查 robots.txt 文件以获取目录结构。我不是指谷歌/雅虎/搜索引擎爬虫。
【解决方案3】:

一个有趣的因素可能是打字频率和鼠标移动。它们很容易通过 JavaScript 捕获。分析它们是另一回事,尽管我认为计算偏差和平均值相当容易,可以很好地了解运动的“有机”程度。

另一方面,这在客户端非常昂贵,如果检测到,可以理解为窥探/间谍。可能作为怀疑是机器人的客户端的高级安全性?

【讨论】:

  • 不错的主意,但如果我是机器人,我可以轻松地关闭 javascript 并绕过它,不是吗?
  • 是的。这仅在您必须使用 Javascript 时才有效。
  • cooly, 生病 +1 一个很酷的想法......但我特别需要非 js 解决方案(我想让它尽可能密封,而且我的网站不依赖于 js).. .谢谢!
【解决方案4】:

我在带有name="email" 的表单中添加了一个隐藏字段(通过 CSS,display:none),当它被填充时它是一个机器人;)

【讨论】:

    【解决方案5】:

    也许检查引用网址?我很难想象会有很多人在没有真正先浏览网站中的其他几个页面的情况下以联系表格结束,订单表格也是如此,...

    【讨论】:

    • .. 和引用 URL 怎么办?检查它是否未列入黑名单?
    • 否,检查是否是有效条目。虽然it can be spoofed
    【解决方案6】:

    我建议不要去猜测这些迹象……它们总是在变化。

    我会对行为的每一个可以想象的“特征”进行标记,并使用“ok”、“spam”或“unsure”自动对这些特征进行评分。然后,'Train on Error'(记录猜测错误的情况)。稍等片刻后,您的准确率可能会达到 99.7%。

    以下是提交给我的网站的 7 个最有趣的功能示例,该功能的垃圾邮件得分为 89.9771%。这是垃圾邮件。

    在帖子中找到的每个关键字都有 98.9% 的可能性是垃圾邮件:

    mssg txt - "tours" || Prob 0.98993 
    mssg txt - "cruises" || Prob 0.98993
    mssg txt - "agencies" || Prob 0.98993
    mssg txt - "choice" || Prob 0.98991 
    

    “12345”电话号码有 95% 的可能性是垃圾邮件

    tel number - "123456" || Prob 0.95440 Delta 0.45440
    

    消息的总长度为 30 个字符(删除 html 后)是指示 94% 垃圾邮件的特征

    mssg maxlen - "30" || Prob 0.94600 
    

    (还有一个得分为Prob 0.01011 的功能抵消了总得分,使其下降了一点。但是,我不会说那个功能是什么;o)


    它是从一个众所周知的垃圾邮件 ip:http://www.projecthoneypot.org/ip_84.19.186.171 提交的,但无需使用该特定知识将其标记为垃圾邮件。我收集了各种信息,例如 IP、提交率等……但是,正如您所见,最明显的类似机器人行为的迹象并不是您可能猜到的。

    要构建您自己的其中之一....请阅读以下内容: http://www.paulgraham.com/spam.html

    【讨论】:

      猜你喜欢
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      • 2014-06-25
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      相关资源
      最近更新 更多