2009-11-19 93 views
6

我正在尝试构建一个只在检测到类bot行为时才显示用户验证码的系统。下面是我目前正在当有人填写了联系表单的行为...PHP检测类似bot的行为

  1. 形式是如何迅速地在页面加载后提交(如果其5秒或更少,它几乎是不可能的入道填写)

  2. 多少接触尝试在过去一小时内作出(限制15 /小时),或天(限25 /天)的链接

  3. 检查消息的内容,以及交叉检查最近收录在过去一天中的其他链接的链接

  4. 垃圾邮件的关键字检查消息


,因为他们来我这里补充有益的社区解决方案:


哪些行为会指示机器人在PHP可以帮助检测(不想使用JS,因为它可以关闭)没有CAPTCHA的帮助?

+0

如果您有任何图像在页面上/ CSS,这是不太可能的机器人将加载它们 – Artelius 2009-11-19 20:39:38

+0

你的意思是,如果我有一个图像/ CSS的页面上,机器人甚至不会加载页面?至少大多数页面没有CSS? – johnnietheblack 2009-11-19 20:45:48

+0

我认为他意味着他们不会加载图像/ css – esqew 2010-10-06 21:27:31

回答

5

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

+0

对,我实际上听说过......一个“蜜罐”...如果有人有兴趣,不适合编辑我的问题,并添加一个链接 – johnnietheblack 2009-11-19 20:42:21

2

我相信你可以配合你的robots.txt文件,并确定它是否被用户击中,这将允许你跟踪请求者的IP /时间戳,这将使一个普通用户看起来不太可能请参阅您的robots.txt文件。

由于大多数机器人都会检查您的robots.txt文件(可能是dir结构等)。

+1

我认为他正在寻找防止类似机器人的机器人阴暗或右键的犯罪意图,并且不检查robots.txt。 – 2009-11-19 20:50:23

+0

你能做到吗?我理所当然地不知道这是否可行,但如果你能描述它,或者提供一个链接,它是一个好主意 – johnnietheblack 2009-11-19 20:51:11

+0

一些机器人可能会检查robots.txt文件来获取目录结构。我不是这个谷歌/雅虎/搜索引擎爬虫。 – Jakub 2009-11-19 20:52:29

2

一个有趣的因素可能是键入频率和鼠标移动。他们很容易通过JavaScript来捕捉。对它们进行分析是另一回事,不过我认为计算偏差和平均值可以很容易地给出一个好主意,说明运动是如何“有机”的。

另一方面,这在客户端非常昂贵,并且可以被理解为如果检测到窥探/间谍。也许作为被怀疑是僵尸程序的客户的高级安全性?

+1

不是一个坏主意,但如果我是一个机器人,我可以很容易地关闭JavaScript并绕过这个,不是吗? – johnnietheblack 2009-11-19 20:50:00

+0

是的。这只有在您必须拥有Javascript时才有用。 – 2009-11-19 20:51:20

+0

cooly,对于一个很酷的想法,病态+1 ...但我特别需要非js解决方案(我想尽可能保持密封,我的网站不是js相关的)......谢谢! – johnnietheblack 2009-11-19 20:52:47

1

也许检查引荐网址?我很难想象很多人在联系表单上没有实际首先浏览网站中的其他页面,订单表单也是如此......

+0

..并对推荐网址做什么?检查它没有被列入黑名单? – Jens 2013-12-17 17:20:40

2

我加了一个隐藏字段(由CSS,显示:无)的形式name="email",当它被填满它是一个机器人;)

0

我建议忘记试图猜测的迹象。他们总是在变化。

我会标记行为的每个可想象的'特征',自动用'ok','spam'或''不确定'对特征进行评分。然后,“训练错误”(记录猜测错误的情况)。一段时间后,你可以有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