6

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

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

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

  3. 检查链接的消息内容,并与过去一天中最近包含的其他链接交叉检查链接

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


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


没有 CAPTCHA 的帮助,PHP 可以帮助检测到哪些其他行为(不想使用 JS,因为它可以被关闭)?

4

6 回答 6

6

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

于 2009-11-19T20:36:36.390 回答
2

I added a hidden field (by CSS, display:none) to the form with name="email", when it is filled it was a robot ;)

于 2009-11-20T21:01:03.067 回答
2

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

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

于 2009-11-19T20:46:30.740 回答
2

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

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

于 2009-11-19T20:48:25.777 回答
1

我建议忘记尝试猜测这些迹象......它们总是在变化。

我会标记行为的每一个可以想象的“特征”,用“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

于 2010-10-05T03:16:32.523 回答
1

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

于 2009-11-19T23:06:15.760 回答