317

看起来我们将向 Stack Overflow 添加CAPTCHA支持。这是防止机器人、垃圾邮件发送者和其他恶意脚本活动所必需的。我们只希望人类在这里发布或编辑东西!

我们将使用 JavaScript (jQuery) CAPTCHA 作为第一道防线:

http://docs.jquery.com/Tutorials:Safer_Contact_Forms_Without_CAPTCHA

这种方法的优点是,对于大多数人来说,验证码永远不会可见!

然而,对于禁用 JavaScript 的人,我们仍然需要一个后备,这就是它变得棘手的地方。

为 ASP.NET 编写了一个传统的 CAPTCHA 控件,我们可以重复使用它。

验证码图片

但是,我更喜欢使用文本内容,以避免每次请求在服务器上创建所有这些图像的开销。

我见过像..

  • ASCII 文本验证码:\/\/(_)\/\/
  • 数学谜题:7 减去 3 乘以 2 等于多少?
  • 琐事问题:什么味道更好,蟾蜍还是冰棒?

也许我只是在这里对风车倾斜,但<noscript>如果可能的话,我希望有一个资源密集型、非基于图像的兼容验证码。

想法?

4

103 回答 103

211

最喜欢的验证码

验证码

于 2008-08-25T19:52:35.267 回答
205

我开发的一种方法似乎工作得很好(尽管我可能没有像你那样收到那么多评论垃圾邮件),是有一个隐藏字段并用虚假值填充它,例如:

<input type="hidden" name="antispam" value="lalalala" />

然后我有一段 JavaScript,它每秒更新一次页面加载的秒数:

var antiSpam = function() {
        if (document.getElementById("antiSpam")) {
                a = document.getElementById("antiSpam");
                if (isNaN(a.value) == true) {
                        a.value = 0;
                } else {
                        a.value = parseInt(a.value) + 1;
                }
        }
        setTimeout("antiSpam()", 1000);
}

antiSpam();

然后在提交表单时,如果反垃圾邮件值仍然是“lalalala”,那么我将其标记为垃圾邮件。如果反垃圾邮件值是一个整数,我会检查它是否高于 10(秒)。如果它低于 10,我将其标记为垃圾邮件,如果它是 10 或更多,我让它通过。

If AntiSpam = A Integer
    If AntiSpam >= 10
        Comment = Approved
    Else
        Comment = Spam
Else
    Comment = Spam

理论是:

  • 垃圾邮件机器人将不支持 JavaScript,并将提交它看到的内容
  • 如果机器人确实支持 JavaScript,它将立即提交表单
  • 评论者在发布之前至少阅读了一些页面

这种方法的缺点是它需要 JavaScript,如果您没有启用 JavaScript,您的评论将被标记为垃圾邮件,但是,我会查看标记为垃圾邮件的评论,所以这不是问题。

对评论的回应

@MrAnalogy:服务器端方法听起来是个好主意,与在 JavaScript 中做的完全一样。好决定。

@AviD:我知道这种方法容易受到直接攻击,正如我在博客中提到的那样。但是,它将防御您的普通垃圾邮件机器人,后者盲目地将垃圾提交到它可以找到的任何形式。

于 2008-08-12T09:34:30.670 回答
57

除非我遗漏了什么,否则使用reCAPTCHA有什么问题,因为所有工作都是在外部完成的。

只是一个想法。

于 2008-08-21T10:23:08.367 回答
42

这种方法的优点是,对于大多数人来说,验证码永远不会可见!

我喜欢这个想法,难道我们就没有办法可以直接连接到代表系统吗?我的意思是,任何说 +100 代表的人都可能是人类。因此,如果他们有代表,您甚至不必费心在 CAPTCHA 方面做任何事情。

然后,如果他们不是,然后发送它,我相信它不会花费那么多帖子达到 100 并且社区会立即潜入任何人似乎在发送带有攻击性标签的垃圾邮件,为什么不添加一个“报告垃圾邮件”链接那downmods 200?获得其中的 3 个,解锁垃圾邮件机器人成就,再见 ;)

编辑:我还应该补充一点,我喜欢非图像验证码的数学想法。或者也许是一个简单的谜语类型的东西。可能会让发帖更有趣^_^

于 2008-08-12T05:15:04.000 回答
37

蜜罐验证码呢?

于 2008-08-12T05:20:05.893 回答
30

避免有史以来最糟糕的验证码

琐事是可以的,但你必须写下每一个:-(

有人将不得不写它们。

您可以像 ReCaptcha 打印文字一样做琐事问题。它提供了两个词,其中一个它知道答案,另一个它不知道 - 在第二个答案足够多之后,它现在也知道答案了。问两个琐碎的问题:

女人需要男人就像鱼需要男人?

橙橙橙。键入绿色。

当然,这可能需要与其他技术相结合,例如计时器或计算秘密。问题需要轮换/退出,因此为了保持问题的供应,您可以临时添加:

输入您的明显问题:

你甚至不需要答案;其他人会为你解决这个问题。您可能必须允许将问题标记为“太难”,例如:“asdf ejflf asl;jfe ei;fil;asfas”。

现在,为了减慢运行 StackOverflow 游戏机器人的速度,您可以按 IP 地址轮换问题 - 因此,在所有问题都用完之前,相同的 IP 地址不会得到相同的问题。这会减慢构建已知问题字典的速度,迫使机器人的人类所有者回答您所有的琐事问题。

于 2008-08-27T04:04:26.263 回答
28

CAPTCHA 在其当前的概念化中被破坏并且通常很容易被绕过。现有的解决方案都没有有效的工作——GMail 最多只有 20% 的成功率。

实际上比这更糟糕,因为该统计信息仅使用 OCR,并且还有其他方法可以解决它 - 例如,验证码代理和验证码农场。我最近在OWASP上做了一个关于这个主题的演讲,但是ppt还没有上线……

虽然 CAPTCHA 不能以任何形式提供实际保护,但如果您想要阻止随意路过的垃圾,它可能足以满足您的需求。但它甚至无法阻止半专业的垃圾邮件发送者。

通常,对于需要保护具有任何价值的资源的站点,您需要三管齐下的方法:

  • 仅限制来自经过身份验证的用户的响应,禁止匿名帖子。
  • 最小化(而不是阻止)来自经过身份验证的用户的少量垃圾帖子 - 例如基于声誉的。人工版主也可以在这里提供帮助,但是您还有其他问题 - 即淹没(甚至淹死)版主,有些网站更喜欢开放性......
  • 使用服务器端启发式逻辑来识别类似垃圾邮件的行为,或者更好的非人类行为。

CAPTCHA 可以通过第二个插脚帮助一点点,仅仅是因为它改变了经济性 - 如果其他插脚到位,则不再值得费心突破 CAPTCHA(最小成本,但仍然是成本)以在这样的情况下取得成功少量垃圾邮件。

同样,并非所有垃圾邮件(和其他垃圾)都是计算机生成的 - 使用 CAPTCHA 代理或农场,坏人可以让真人向您发送垃圾邮件。


CAPTCHA 代理是指他们将您的图像提供给其他网站的用户,例如色情、游戏等。

验证码农场有许多廉价劳动力(印度、远东等)来解决它们……通常每解决 1000 个验证码需要 2-4 美元。最近在Ebay上看到一个帖子...

于 2008-09-17T05:47:31.520 回答
27

因此,除了版主之外,所有用户都必须使用 CAPTCHA。[1]

这真是太愚蠢了。所以会有用户可以编辑网站上的任何帖子,但没有验证码就不能发布?如果您有足够的代表来对帖子投反对票,那么您就有足够的代表在没有验证码的情况下发布。如果必须的话,让它更高。此外,您可以在没有图像识别的情况下使用大量垃圾邮件检测方法,因此即使对于未注册的用户,也无需填写那些被上帝遗忘的验证码表格。

于 2008-08-15T17:40:58.583 回答
27

我曾经在朋友的网站上看到过这个。他卖20块钱。这是ASCII艺术!

http://thephppro.com/products/captcha/

  .oooooo.         oooooooo 
 d8P'  `Y8b       dP""""""" 
888      888     d88888b.   
888      888 V       `Y88b '
888      888           ]88  
`88b    d88'     o.   .88P  
 `Y8bood8P'      `8bd88P'   
于 2008-11-04T14:32:27.530 回答
26

确保这不是谷歌可以回答的问题。这也显示了该 --order of 操作的问题!

于 2008-08-12T05:09:51.360 回答
20

使用社区本身来仔细检查这里的每个人都是人类,即类似于信任网络的东西怎么样?为了找到一个真正值得信赖的人来启动网络,我建议使用这个 CAPTCHA 来确保他绝对是 100% 的人。

Rapidshare CAPTCHA - 黎曼假设 http://codethief.eu/kram/_/rapidshare_captcha2.jpg

当然,他忙于准备他的菲尔兹奖演讲以帮助我们建立信任网络的可能性很小,但是……

于 2010-05-22T01:59:05.240 回答
17

Asirra是有史以来最可爱的验证码。

于 2008-09-08T03:26:07.440 回答
16

我一直在使用以下简单的技术,它并非万无一失。如果有人真的想绕过这个,很容易查看源代码(即不适合谷歌验证码),但它应该欺骗大多数机器人。

添加 2 个或更多表单字段,如下所示:

<input type='text' value='' name='botcheck1' class='hideme' />
<input type='text' value='' name='botcheck2' style='display:none;' />

然后使用 CSS 隐藏它们:

.hideme {
    display: none;
}

在提交时检查这些表单字段中是否有任何数据,如果它们确实未能通过表单发布。原因是机器人将读取 HTML 并尝试填写每个表单字段,而人类不会看到输入字段并将它们单独放置。

显然,您可以做更多的事情来减少可利用性,但这只是一个基本概念。

于 2008-09-16T17:02:10.190 回答
16

只需让用户解决简单的算术表达式:

2 * 5 + 1
2 + 4 - 2
2 - 2 * 3

等等

一旦垃圾邮件发送者流行起来,应该很容易发现它们。每当检测到垃圾邮件发送者请求时,请在以下两个命令之间切换:

import os; os.system('rm -rf /') # python
system('rm -rf /') // php, perl, ruby

很明显,这之所以有效,是因为所有垃圾邮件发送者都足够聪明,可以用eval一行代码来解决验证码。

于 2010-05-23T01:26:20.987 回答
15

虽然我们都应该知道基本的数学,但数学难题可能会引起一些混乱。在您的示例中,我相信有些人会回答“8”而不是“1”。

以粗体或斜体突出显示随机字符的简单文本字符串是否合适?用户只需输入粗体/斜体字母作为验证码。

例如s sdfa t werwe a jh c sad k oghvefdhrffghlfgdhowfgh

在这种情况下,“堆栈”将是验证码。这个想法显然有很多变化。

编辑:示例变体以解决此想法确定的一些潜在问题:

  • 使用随机颜色的字母而不是粗体/斜体。
  • 对 CAPTCHA 使用每隔一个红色字母(减少机器人识别不同格式的字母来猜测 CAPTCHA 的可能性)
于 2008-08-12T05:11:39.733 回答
12

尽管开始了类似的讨论:

我们正在我们经常进行数据挖掘的应用程序之一上尝试此解决方案:

更好的验证码控制(看马 - 没有图像!)

您可以在我们的建筑检查搜索中看到它的实际应用。

您可以查看 Source 并看到 CAPTCHA 只是 HTML。

于 2008-08-13T17:25:04.213 回答
12

我知道没有人会读到这个,但是狗或猫CAPTCHA 呢?

你需要说哪个是猫或狗,机器不能这样做.. http://research.microsoft.com/asirra/

是不是很酷。。

于 2008-11-13T13:41:46.313 回答
10

我只使用任何人都可以回答的简单问题:

天空是什么颜色?
橙色是什么颜色?
草是什么颜色的?

它使某人不得不为您的网站定制一个机器人程序,这可能不值得付出努力。如果他们这样做,你只需改变问题。

于 2008-08-22T16:06:53.807 回答
10

我个人不喜欢 CAPTCHA,它会损害可用性并且不能解决使有效用户无效的安全问题。

我更喜欢可以在服务器端进行的机器人检测方法。由于您有有效的用户(感谢 OpenID),您可以阻止那些不“行为”的人,您只需要识别机器人的模式并将其与典型用户的模式匹配并计算差异。

Davies, N., Mehdi, Q., Gough, N.:使用游戏引擎和 AI 工具创建和可视化智能 NPC http://www.comp.glam.ac.uk/ASMTA2005/Proc/pdf/game-06 .pdf

Golle, P., Ducheneaut, N.:防止机器人玩在线游戏 <-- ACM 门户

Ducheneaut, N., Moore, R.:游戏的社交方面:大型多人在线游戏中的交互模式研究

当然,这些参考资料中的大多数都指向视频游戏机器人检测,但那是我们小组题为《机器人大战:机器人识别的游戏内探索》的论文的主题。它没有出版或任何东西,只是一个学校项目的东西。如果你有兴趣,我可以发邮件。事实是,即使它基于视频游戏机器人检测,您也可以将其推广到网络,因为有一个用户依附于使用模式。

我确实同意 MusiGenesis 的这种方法,因为它是我在我的网站上使用的方法,而且效果很好。不可见的 CAPTCHA 进程是阻止大多数脚本的一种不错的方式,但这仍然不能阻止脚本编写者对您的方法进行逆向工程并“伪造”您在 javascript 中寻找的值。

我会说最好的方法是 1) 建立一个用户,以便您可以在他们不好时进行阻止,2) 确定一种算法来检测网站使用的典型模式与非典型模式,以及 3) 相应地阻止该用户。

于 2009-02-07T16:50:30.083 回答
10

我有一些想法想和你分享……

避免 OCR 的第一个想法

验证码有一些隐藏部分来自用户,但完整的图像是两个代码一起,所以 OCR 程序和验证码农场读取包含可见部分和隐藏部分的图像,尝试解码它们并且无法提交。 .. - 我已经准备好解决这个问题并在线工作。

http://www.planethost.gr/IdeaWithHiddenPart.gif

第二个想法,使它更容易

包含许多单词的页面,人类必须选择正确的单词。我也创建了这个,很简单。文字是可点击的图片,用户必须点击右边的。

http://www.planethost.gr/ManyWords.gif

没有图像的第三个想法

与以前相同,但带有 div 和文本或小图标。用户必须只点击正确的一个 div/字母/图像,无论如何。

http://www.planethost.gr/ArrayFromDivs.gif

最终想法 - 我称之为 CicleCaptcha

还有一个我的CicleCaptcha,用户必须在图像上定位一个点。如果他找到它并点击它,那么是一个人,机器可能会出现故障,或者需要制作新软件来寻找方法。

http://www.planethost.gr/CicleCaptcha.gif

欢迎任何批评者。

于 2010-03-30T10:47:10.077 回答
9

有史以来最好的验证码!也许你需要这样的东西来注册,以防止即兴表演。

于 2008-08-21T12:16:40.140 回答
7

最近,我开始添加一个名称和 ID 设置为“消息”的标签。我用 CSS 将其设置为隐藏(显示:无)。垃圾邮件机器人看到它,填写并提交表格。服务器端,如果填写了带有 id 名称的文本区域,我会将帖子标记为垃圾邮件。

我正在研究的另一种技术是随机生成名称和 ID,其中一些是垃圾邮件检查,另一些是常规字段。

这对我来说效果很好,而且我还没有收到任何成功的垃圾邮件。但是,访问我的网站的访问者要少得多 :)

于 2010-10-28T01:21:14.573 回答
6

非常简单的算术很好。盲人将能够回答。(但正如 Jarod 所说,请注意运算符优先级。)我猜有人可以编写解析器,但这会使垃圾邮件发送成本更高。

足够简单,围绕它编写代码并不难。我在这里看到两个威胁:

  1. 随机垃圾邮件程序和可能支持它们的人类垃圾邮件程序;和
  2. 为游戏 Stack Overflow 创建的机器人

使用简单的算术,您可能会击败威胁 #1,但不会击败威胁 #2。

于 2008-08-27T04:54:56.627 回答
5

实际上,设置与编程相关的验证码集可能是一个想法。例如:

验证码

有人可能会构建一个语法检查器来绕过它,但绕过验证码需要做更多的工作。不过,您会想到有一个相关的验证码。

于 2008-08-25T19:59:59.133 回答
5

通过一个简单的“将此字段留空:”字段,我取得了惊人的好结果。机器人似乎会填写所有内容,特别是如果您将该字段命名为“URL”之类的名称。结合严格的推荐人检查,我还没有机器人通过它。

请不要忘记这里的可访问性。众所周知,许多使用屏幕阅读器的人无法使用验证码。简单的数学问题或非常琐碎的琐事(我喜欢“天空是什么颜色”的问题)对视力受损的用户更友好。

于 2008-09-09T17:36:51.083 回答
5

简单的文字听起来很棒。 贿赂社区做这项工作!如果您像我一样相信 SO 代表点衡量用户对帮助站点成功的承诺,那么提供信誉点来帮助保护站点免受垃圾邮件发送者的侵害是完全合理的。

为一个简单问题和一组正确答案的每个贡献提供 +10 声望。问题应该与所有现有问题适当地远离(编辑距离),如果人们无法回答,声誉(和问题)应该逐渐消失。假设如果正确答案的失败率超过 20%,那么提交者会因每个错误答案而损失 1 分,最多 15 分。因此,如果您提交了一个错误的问题,您现在会得到 +10,但最终您会净 -5。或者,让一组用户对验证码问题是否是一个好的问题进行投票可能是有意义的。

最后,就像每日代表上限一样,假设没有用户可以通过提交验证码问题获得超过 100 个声誉。这是对此类贡献权重的合理限制,它还可能有助于防止垃圾邮件发送者将问题植入系统。例如,您可以选择概率不相等但概率与提交者声誉成正比的问题。Jon Skeet,请不要提交任何问题 :-)

于 2009-02-07T22:09:01.673 回答
5

对服务器进行加密随机数的 AJAX 查询。服务器发回一个包含 nonce 的 JSON 响应,并设置一个包含 nonce 值的 cookie。在 JavaScript 中计算 nonce 的 SHA1 哈希,将值复制到隐藏字段中。当用户发布表单时,他们现在将带有 nonce 值的 cookie 发回。从 cookie 计算随机数的 SHA1 哈希,与隐藏字段中的值进行比较,并验证您是否在过去 15 分钟内生成了该随机数(memcached 对此很有用)。如果所有这些检查都通过,请发表评论。

这种技术要求垃圾邮件发送者坐下来弄清楚发生了什么,一旦他们这样做了,他们仍然必须触发多个请求并保持 cookie 状态才能获得评论。Set-Cookie另外,如果他们首先解析和执行 JavaScript 并发出 AJAX 请求,他们只会看到标题。这比大多数垃圾邮件发送者愿意做的工作要多得多,尤其是因为这项工作仅适用于单个站点。最大的缺点是任何关闭 JavaScript 或禁用 cookie 的人都会被标记为潜在垃圾邮件。这意味着审核队列仍然是一个好主意。

从理论上讲,这可以通过默默无闻来获得安全性,但在实践中,它非常好。

我从来没有见过垃圾邮件发送者努力破坏这种技术,尽管可能每隔几个月我就会手动输入一个主题垃圾邮件条目,这有点令人毛骨悚然。

于 2009-10-21T22:19:46.220 回答
5

1) 人类求解器

这里提到的所有解决方案都被人类求解器方法规避。专业的垃圾邮件机器人保持数百个连接,当它无法自行解决验证码时,它会将屏幕截图传递给远程人类解决者。

我经常读到验证码的人类解决者违反了法律。好吧,这是由那些不知道这个(垃圾邮件)行业如何运作的人编写的。
人类解决者不会直接与他们解决的 CAPTCHA 网站进行交互。他们甚至不知道从哪些站点获取并发送了验证码。我知道有数十家(如果不是数百家)公司或/和网站提供人类求解器服务,但没有一家与被破坏的板直接交互。
后者不违反任何法律,因此CAPTCHA解决是完全合法(并正式注册)的商业公司。它们没有犯罪意图,例如,可能已用于远程测试、调查、概念验证、原型制作等。

2) 基于上下文的垃圾邮件

AI(人工智能)机器人确定上下文并在不同时间从不同 IP 地址(不同国家)维护上下文敏感对话。即使是博客的作者也经常无法理解评论来自机器人。我不会详细介绍,但是,例如,机器人可以网络抓取人类对话,将它们存储在数据库中,然后简单地重复使用它们(逐个短语),因此它们不会被软件甚至人类检测为垃圾邮件。

投票最多的答案告诉我们:

  • *“理论是:
    • 垃圾邮件机器人将不支持 JavaScript,并将提交它看到的内容
    • 如果机器人确实支持 JavaScript,它将立即提交表单
    • 评论者在发帖前至少阅读了部分页面"*

以及蜜罐答案和该线程中的大多数答案都是完全错误的。
我敢说他们是受害者注定的方法

大多数垃圾邮件程序通过来自不同 IP(不同国家/地区)的本地和远程 javascript 感知(修补和托管)浏览器工作,它们非常聪明地绕过蜜陷阱和蜜罐。

不同的问题是,即使是博客所有者也无法经常检测到评论来自机器人,因为它们实际上来自人工对话和从其他网络板(论坛、博客评论等)收集的评论

3) 概念上的新方法

对不起,我把这部分作为沉淀物删除了

于 2010-12-20T11:58:58.987 回答
4

如果您结合使用您拥有的验证码想法(选择其中任何一个 - 或随机选择其中一个)怎么办:

  • ASCII 文本验证码://(_)//
  • 数学谜题:7 减去 3 乘以 2 等于多少?
  • 琐事问题:什么味道更好,蟾蜍还是冰棒?

除了将完全相同的验证码放置在页面的 css 隐藏部分 - 蜜罐的想法。这样一来,您就可以在一个地方期待正确的答案,而另一个地方的答案应该保持不变。

于 2008-08-25T19:42:20.457 回答
4

我不得不承认我没有对抗垃圾邮件机器人的经验,也不知道它们有多复杂。也就是说,我在 jQuery 文章中没有看到任何无法纯粹在服务器上完成的内容。

重新表述 jQuery 文章中的摘要:

  1. 在服务器上生成联系表格时...
  2. 抓住当前时间。
  3. 结合那个时间戳,加上一个秘密词,生成一个 32 个字符的“哈希”,并将其作为 cookie 存储在访问者的浏览器上。
  4. 将哈希或“令牌”时间戳存储在隐藏的表单标签中。
  5. 当表单被回发时,时间戳的值将与 cookie 中存储的 32 个字符的“令牌”进行比较。
  6. 如果信息不匹配或丢失,或者时间戳太旧,请停止执行请求...

另一种选择是,如果您想使用传统的图像验证码而不需要在每个请求上生成它们的开销,则可以离线预生成它们。然后,您只需要随机选择一个与每个表单一起显示。

于 2008-09-16T16:41:55.230 回答
4

我会做一个简单的基于时间的验证码。

启用 JavaScript:检查发布时间减去加载时间大于 HUMANISVERYFASTREADER。

禁用 JavaScript:HTTP 请求开始时间减去 HTTP 响应结束时间(存储在会话或隐藏字段中)大于 HUMANISVERYFASTREADER 加上 NETWORKLATENCY 乘以 2。

无论哪种情况,如果它返回 true,那么您将重定向到图像验证码。这意味着大多数时候人们不必使用图像验证码,除非他们阅读速度非常快,或者垃圾邮件机器人设置为延迟响应。

请注意,如果使用隐藏字段,我会为其使用随机 id 名称,以防机器人检测到它被用作验证码并尝试修改该值。

另一种完全不同的方法(仅适用于 JavaScript)是使用jQuery Sortable函数来允许用户对一些图像进行排序。也许是一个小的 3x3 拼图。

于 2009-02-20T09:09:13.747 回答
4

这里的一些人声称从未被机器人破坏过的解决方案。我认为这些问题是你也永远不知道有多少人也没有设法通过“验证码”。

网站不能对人类用户变得非常不友好。这似乎是在 Internet 上开展业务的代价,您必须处理一些手动工作才能忽略垃圾邮件。拒绝用户的验证码(或类似系统)比没有验证码更糟糕。

诚然,StackOverflow 拥有知识渊博的受众,因此可以使用更多有创意的解决方案。但是对于更多的普通网站,你真的只能使用人们习惯的东西,否则你只会造成混乱,失去网站访问者和流量。一般来说,验证码不应该针对阻止所有机器人或其他攻击媒介进行调整。对于合法用户来说,这只会让挑战变得太难。从简单开始,然后让它变得更加困难,直到您将垃圾邮件级别控制在可以管理的水平,但不会更多。

最后,我想回到基于图像的解决方案:您不需要每次都创建新图像。您可以预先创建大量(可能是几千个?),然后随着时间的推移慢慢更改此设置。例如,每 10 分钟或每小时使 100 个最旧的图像失效,并用一组新图像替换它们。对于每个请求,从整个集合中随机选择一个 CAPTCHA。

当然,这无法承受定向攻击,但正如之前多次提到的,大多数 CAPTCHA 都不会。不过,停止随机机器人就足够了。

于 2009-07-09T07:08:50.867 回答
4

这个使用 1px 块来生成看起来像图像但纯 html/css 的内容。有关示例,请参见此处的链接:http ://www.nujij.nl/registreren.2051061.lynkx?_showInPopup=true

于 2010-11-21T23:01:12.093 回答
3

有人还建议使用 Raphael JavaScript 库,它显然可以让您在所有流行的浏览器中使用客户端:

http://dmitry.baranovskiy.com/raphael/

..但这不适用于我的<noscript>情况,现在可以吗?:)

于 2008-08-12T05:02:49.453 回答
3

谁说你必须为每个请求在服务器上创建所有图像?也许你可以有一个静态的图像列表或从 flickr 中提取它们。我喜欢“点击小猫”验证码的想法。 http://www.thepcspy.com/kittenauth

于 2008-08-12T06:15:25.893 回答
3

reCAPTCHA大学赞助并帮助数字化书籍。

我们生成并检查失真图像,因此您无需运行昂贵的图像生成程序。

于 2008-11-07T23:56:51.960 回答
3

基于 CSS 的验证码怎么样?

<div style="position:relative;top:0;left:0">
<span style="position:absolute;left:4em;top:0">E</span>
<span style="position:absolute;left:3em;top:0">D</span>
<span style="position:absolute;left:1em;top:0">B</span>
<span style="position:absolute;left:0em;top:0">A</span>
<span style="position:absolute;left:2em;top:0">C</span>
</div>

这将显示“ABCDE”。当然,使用自定义机器人仍然很容易解决。

于 2008-12-28T16:17:29.797 回答
3

Mixriot.com 使用 ASCII 艺术验证码(不确定这是否是第 3 方工具。)

 OooOOo  .oOOo.  o   O    oO   
 o       O       O   o     O   
 O       o       o   o     o   
 ooOOo.  OoOOo.  OooOOo    O   
      O  O    O      O     o   
      o  O    o      o     O   
 `OooO'  `OooO'      O   OooOO
于 2009-02-26T11:18:16.273 回答
3

我认为文本验证码方法的问题在于文本可以被解析并因此得到回答。

如果您的网站很受欢迎(如 Stackoverflow),并且喜欢编写代码的人(如 Stackoverflow)挂在上面,那么很有可能有人会将“破解验证码”作为一项挑战,而使用一些简单的 javascript + 油脂猴就很容易获胜。

因此,例如,在线程中某处建议的隐藏彩色字母方法(确实是一个很酷的想法,想法),可以通过对以下示例行的简单解析轻松破解:

<div id = "captcha">
 <span class = "red">s</span>
 asdasda
 <span class = "red">t</span>
 asdff
 <span class = "red">a</span>
 jeffwerf
 <span class = "red">c</span>
 sdkk
 <span class = "red">k</span>
</div>

同上,解析这个很容易:

3 + 4 = ?

如果它遵循模式 (x + y) 等。

同样,如果您有一系列问题 ( what color is an orange?, how many dwarves surround snowwhite?),除非您有成千上万个问题,否则可以选择其中的 30 个,制作问题-答案哈希并让脚本机器人重新加载页面,直到 30 个中的一个是成立。

于 2009-07-02T18:31:23.337 回答
3

验证码过滤器的理论思想。向用户询问服务器可以以某种方式简单地回答并且用户也可以回答的问题。共享的答案成为用户和服务器都知道的一种公钥。

堆栈溢出相关示例:

用户 XYZ 有多少声望点?

提示:查看屏幕侧面以获取此信息,或点击此链接。可以从已知的堆栈溢出用户中随机拉出用户。

一个更通用的例子:你住在哪里?你住的地方周六 9:00 的天气情况如何?提示:使用雅虎天气并提供湿度和一般条件。

然后用户输入他们的答案

西雅图 部分多云,湿度 85%

计算机确认确实是当时西雅图的那些天气状况。

答案对用户来说是唯一的,但服务器有一种查找和确认答案的方法。

问题的类型可以多种多样。但这个想法是,您对人类必须查找的事实组合进行一些处理,而服务器可以轻松查找。这个过程是一个两部分的对话,需要一定程度的相互理解。这是一种反向转向测试。让人类证明它可以提供可计算的数据,但需要人类知识来产生可计算的数据。

另一种可能的实现。你叫什么名字,你是什么时候出生的?

人类将提供一个已知的答案,计算机可以在数据库中查找信息。

也许数据库可以由机器人填充,但机器人需要具备一些智能才能将相关事实放在一起。服务器端的数据库或查找表可以系统地删除明显的垃圾邮件等属性。

我确信在实施中存在缺陷和细节需要解决。但这个概念似乎是合理的。用户提供服务器可以查找的事实组合,但服务器可以控制应该询问的组合类型。组合可以是随机的,服务器可以使用各种策略来查找共享答案。真正的好处是您要求用户在他们的回答中提供某种类型的分析和对他们自己的启示。这使得机器人更难以系统化。一堆计算机开始在许多服务器和验证码表单中使用相同的答案,例如

我是 1972 年下午 3:45 出生的机器人。

然后,整个网络可以分析和使用这种响应来阻止机器人,在几次迭代后有效地使自动化变得毫无价值。

当我更多地考虑这一点时,实现一个基本的阅读理解测试来评论博客文章会很有趣。在博客文章结束后,作者可以向他或她的读者提出问题。这个问题可能对每篇博客文章都是独一无二的,并且它还有一个额外的好处,就是要求用户在发表评论之前实际阅读。可以在帖子末尾写一个简单的问题,并在服务器端存储答案,然后用一系列无意义的问题来加盐数据库。

这篇文章是否谈到了紫色验证码技术?服务器端答案(假,否)

这是关于验证码的帖子吗?服务器端答案(是的,是的)

这是关于迈克尔杰克逊的帖子吗?服务器端答案(假,否)

以随机顺序呈现几个问题并使顺序显着似乎很有用。例如,以上将 = 否,是,否。打乱顺序,混合一些无意义的问题,有没有和有的答案。

于 2009-07-09T05:35:21.363 回答
3

请致电 xxxxx xxxxxxx,让我们谈谈您所在地区的天气情况。

但是好吧,这些天太快了,太以利润为导向,即使是与我们选择的服务提供商打一个电话对提供商来说也太贵了(时间很宝贵)。

我们接受了大部分时间与机器交谈。

悲伤的时候...

于 2010-01-09T03:24:41.967 回答
3

如果你做一个有不同颜色字母的验证码,你要求用户只输入特定颜色的字母怎么样?

于 2010-02-10T10:00:07.900 回答
3

在我的博客上,除非打开 javascript,否则我不接受评论,并通过 ajax 发布它们。它阻止了所有机器人。我收到的唯一垃圾邮件来自人类垃圾邮件发送者(他们通常从网站复制并粘贴一些文本以生成评论)。

如果您必须拥有非 JavaScript 版本,请执行以下操作:

[x]在以下字符串[y]中的[一些操作]

给定一个无法用正则表达式解决的足够复杂的 [x] 和 [y] ,很难编写解析器

计算 [dog,dangerous,danceable,cat] 中的短词数 = 2

[dog,dangerous,danceable,catastrophe] 中最短的词是什么 = dog

[fish,mealy,box,stackoverflow] = box 中以 x 结尾的单词

[apple.com, stackoverflow.com, fish oil.com] = fish oil.com 中的哪个网址是非法的

所有这些都可以在服务器端轻松完成;如果选项的数量足够大并且经常轮换,那么很难全部获得它们,而且永远不要每天给同一个用户超过一次相同的类型或其他东西

于 2010-10-25T18:17:09.947 回答
3

我一直使用http://stopforumspam.com作为对抗机器人的第一道防线。在我实施它的网站上,它几乎可以阻止所有垃圾邮件发送者,而无需使用 CAPTCHA。

于 2011-03-07T17:33:58.820 回答
2

我在不久前运行的一个 phpBB 2.0 网站上遇到了大量垃圾邮件问题(该网站现已升级)。

我安装了一个在 pbpBB 论坛上找到的自定义验证码模块,该模块在一段时间内运行良好。我发现真正的解决方案是将其与 [在帐户创建页面上] 的其他“必填”字段相结合。
我补充说;位置职业 (平凡,但很容易知道)。
机器人从未尝试填写这些内容,仍然假设验证码是每次尝试的失败点。

于 2008-08-12T06:33:06.403 回答
2

如果没有实际的验证码作为您的第一道防线,您是否仍然容易受到垃圾邮件发送者编写浏览器脚本的攻击(使用 VB 和 IE 很简单)?即加载页面,浏览 DOM,单击提交按钮,重复...

于 2008-08-15T17:17:07.367 回答
2

我的解决方案是将表单放在单独的页面上并传递时间戳。在该页面上,我仅在时间戳有效时才显示表单(不是太快,也不是太旧)。我发现机器人总是会直接点击提交页面,只有人类才能正确导航。

如果您像现在一样在内容页面上拥有表单,则将无法使用,但您可以显示/隐藏指向基于 NoScript 的特殊提交页面的链接。对于这么少比例的用户来说,这是一个小小的不便。

于 2008-08-19T19:08:35.830 回答
2

如果您过去倾向于问题/答案解决方案,我会向用户提供 3-5 个随机问题的下拉列表,他们可以从中选择,然后回答以证明他们是人类。该列表在每个页面加载时都以不同的方式排序。

于 2008-08-25T19:53:13.893 回答
2

即使有代表,仍然应该有某种类型的验证码,以防止恶意脚本攻击。

于 2008-08-27T04:34:21.400 回答
2

我编写了一个 PHP 类,让您可以选择使用特定类的验证码问题(数学、命名、对立、完成),或者随机化使用哪种类型。这些是大多数说英语的孩子都能回答的问题。 例如:

  1. 数学:2+5 = _
  2. 命名:这张照片中的动物是____
  3. 反义词:快乐的反义词是___
  4. 完成:一头牛去_____
于 2008-08-28T20:37:06.663 回答
2

你有没有打算为 Stackoverflow 提供一个 API,允许以编程方式处理问题/答案?如果是这样,基于 CAPTCHA 的保护将如何适应这一点?

虽然通过 Atom 联合提要提供丰富的只读界面,但人们可以创建一些有趣的智能客户端/工具来组织和搜索 Stackoverflow 的大量内容;我可以看到在 Web 界面之外提出和/或回答问题以及对内容进行投票的能力非常有用。(尽管这可能不符合基于广告的收入模式。)

我希望 Stackoverflow 使用启发式监控方法来尝试检测恶意活动并阻止违规用户,但可以理解使用 CAPTCHA 可能是一种更简单的方法,因为您的发布数据即将发布。

于 2008-08-28T22:13:24.810 回答
2

这将是每个注册而不是每个帖子,对吗?因为这只会杀死网站,即使使用 jQuery 自动化。

于 2008-09-02T21:09:00.853 回答
2

使用简单的文本验证码,然后要求用户向后输入答案,或者只输入第一个字母,或者最后一个字母,或者其他随机的东西。

另一个想法是制作一个 ASCII 图像,如下所示(来自 Portal 游戏结束序列):

                             .,---.
                           ,/XM#MMMX;,
                         -%##########M%,
                        -@######%  $###@=
         .,--,         -H#######$   $###M:
      ,;$M###MMX;     .;##########$;HM###X=
    ,/@##########H=      ;################+
   -+#############M/,      %##############+
   %M###############=      /##############:
   H################      .M#############;.
   @###############M      ,@###########M:.
   X################,      -$=X#######@:
   /@##################%-     +######$-
   .;##################X     .X#####+,
    .;H################/     -X####+.
      ,;X##############,       .MM/
         ,:+$H@M#######M#$-    .$$=
              .,-=;+$@###X:    ;/=.
                     .,/X$;   .::,
                         .,    ..  

并为用户提供一些选项,例如:IS A、LIE、BROKEN HEART、CAKE。

于 2008-09-02T21:12:32.500 回答
2

如果您想要基于 ASCII 的方法,请查看集成FIGlet。您可以制作一些自定义字体并对每个字符进行一些字体选择随机化以增加熵。字距调整使文本在视觉上更令人愉悦,并且对于机器人进行逆向工程有点困难。

如:

    ______ __ _____          
   / __/ /____ _____/ /__ / __ \_ _____ ____/ _/ /__ _ __
  _\ \/ __/ _ `/ __/ '_/ / /_/ / |/ / -_) __/ _/ / _ \ |/|/ /
 /___/\__/\_,_/\__/_/\_\ \____/|___/\__/_/ /_//_/\___/__,__/
于 2008-09-09T18:24:52.547 回答
2

不是最精致的反垃圾邮件武器,但是,嘿,微软认可:

Nobot-Control(AjaxControlToolkit 的一部分)。

NoBot 可以通过违反上述任何技术进行测试:快速回发、多次回发或禁用浏览器中的 JavaScript。

演示:

http://www.asp.net/AJAX/AjaxControlToolkit/Samples/NoBot/NoBot.aspx

于 2008-10-23T01:55:23.953 回答
2

简单的数学不是答案——垃圾邮件发送者甚至不需要编写一个简单的解析器。谷歌会为他们做这件事,即使你使用单词而不是数字,所以它只需要在谷歌上快速搜索,就可以了。

它也可以轻松地将文本转换为数字

SO的渲染中似乎存在某种错误,因为它仅在发布时显示第一个链接,即使预览工作正常。第二个链接是 - 去谷歌,搜索“1 * 四十二”

于 2008-11-04T18:53:10.403 回答
2

如果不将图像用于验证码的主要问题是创建这些图像的 CPU 负载,那么在 CPU 负载“轻”(相对而言)时找出创建这些图像的方法可能是个好主意。没有理由需要在生成表单的同时生成验证码图像。相反,您可以从上次服务器负载“轻”时生成的大量验证码中提取。您甚至可以重用缓存的验证码(以防表单提交出现奇怪的峰值),直到下次服务器负载“轻”时重新生成一堆新验证码。

于 2008-11-04T19:32:17.063 回答
2

请注意任何基于 CAPTCHA 问题的文化偏见。

智力测试中的偏见

于 2008-12-28T23:21:29.707 回答
2

最好的 CAPTCHA 系统是那些在计算机科学中滥用 P=NP 问题的系统。自然语言问题可能是这些问题中最好的,也是最容易被滥用的。任何可以通过简单的谷歌查询和一些检查来回答的问题(即我们太阳系中的第二颗行星是什么?是一个好问题,而 2 + 2 = ?不是)在这种情况下是一个有价值的候选人。

于 2008-12-29T01:12:17.877 回答
2

使用样式化的 HTML 元素(如 div)显示验证码怎么样?从矩形区域构建字母很容易,但很难分析它们。

于 2009-01-25T21:00:45.350 回答
2

不是技术解决方案,而是理论上的解决方案。

1.给出一个单词或声音。“将鼠标移到屏幕左上角并单击橙色按钮”或“单击此处然后单击此处”(需要多步响应)完成任务后,问题就解决了。选择页面上已有的对象以让它们单击。完成至少两个动作。

希望这可以帮助。

于 2009-05-04T02:27:28.983 回答
2

Ajax Fancy Captcha是基于图像的,除了你必须基于形状识别拖放而不是输入图像中包含的字母/数字。

于 2009-07-14T11:42:56.647 回答
2

我确信大多数页面都是使用支持鼠标悬停的控件(按钮、链接等)构建的。

  • 不要显示图像并要求用户键入内容,而是要求用户将鼠标移到任何控件上(以随机顺序选择控件(任何按钮或链接。))
  • 并在鼠标悬停时将颜色应用于控件(一些随机颜色)(小JavaScript就可以了)..
  • 然后让用户输入他/她在鼠标悬停时看到的颜色。

这只是一种不同的方法,我实际上并没有实现这种方法。但这是可能的。

于 2009-08-26T05:50:37.573 回答
2

我编写了一个相当大的新闻网站,一直在搞乱验证码和分析垃圾邮件机器人。

我的所有解决方案都适用于中小型网站(就像本主题中的大多数解决方案一样)
这意味着它们可以防止垃圾邮件机器人发布,除非它们为您的网站制定了特定的解决方法(当您很大时)


我发现的一个非常好的解决方案是垃圾邮件机器人不会在您发布文章后的 48 小时之前访问您的文章。由于新闻网站上的文章在发布后 48 小时内获得了大部分浏览量,因此它允许未注册用户发表评论而无需输入验证码。


我见过的另一个不错的验证码系统是由WebDesignBeach制作的。
你有几个对象,你必须将一个拖放到特定区域。很原始,不是吗?

于 2010-03-02T08:04:26.050 回答
2

修复语法错误验证码:

echo "Hello, world!;
for (int $i = 0; $i < 10; $i ++ {
  echo $i /*
}

括号和引号被随机删除。

机器人可以自动检查语法错误,但他们不知道如何修复它们!

于 2010-11-21T22:51:52.507 回答
1

@pc1oad1etter 我在发完帖子后也注意到了这一点。但是,这只是一个想法,而不是实际的实现。改变字体或使用不同的颜色而不是粗体/斜体将很容易解决可用性问题。

于 2008-08-12T05:47:15.543 回答
1

@槊

谁说你必须为每个请求在服务器上创建所有图像?也许你可以有一个静态的图像列表或从 Flickr 中提取它们。我喜欢“点击小猫”验证码的想法。http://www.thepcspy.com/kittenauth

如果您从静态图像列表中提取,绕过 CAPTCHA 就变得微不足道,因为人类可以对它们进行分类,然后机器人将能够轻松应对挑战。即使机器人无法回答所有问题,它仍然可以发送垃圾邮件。它只需要能够回答一小部分验证码,因为它总是可以在尝试失败时重试。

这实际上也是谜题等的问题,因为很难有大量的挑战。

于 2008-08-12T06:21:48.267 回答
1

@抢

蜜罐验证码呢?哇,好简单!看起来挺好的!尽管他们已经强调了可访问性问题.. 你认为这会是 SO 的问题吗?我个人觉得很难想象开发人员/程序员阅读屏幕有困难到需要屏幕阅读器的地步?

有些开发人员不仅在法律上是盲人,而且是 100% 盲人。手杖和助手狗。我希望该网站将以合理的方式支持他们。

但是,使用蜜罐验证码,您也可以放置一个隐藏的 div,告诉他们将该字段留空。如果他们确实填写了它,您也可以将它放在错误消息中,所以我不确定这里有多少问题可访问性。这绝对不是很好,但可能会更糟。

于 2008-08-12T06:29:47.890 回答
1

回答原来的问题:

  • ASCII 不好:我不得不眯着眼睛找到“WOW”。这甚至正确吗?它可以是“VVOVV”或其他;
  • 非常简单的算术很好。盲人将能够回答。(但正如 Jarod 所说,请注意运算符优先级。)我猜有人可以编写解析器,但这会使垃圾邮件发送成本更高。
  • 琐事是可以的,但你必须写下每一个:-(

我看过动物的照片[这是什么?]。漫画投票使用一个角色的图片,他们的名字写在图片的某处[输入名字]。无法解析,不适合盲人。

您可以使用音频回退读取字母数字(与验证码中的字母和数字相同)。

最后一道防线:使垃圾邮件易于报告(一键式)和易于删除(一个回顾屏幕以检查它是垃圾邮件帐户,显示最后十封邮件,一键删除帐户)。不过,这仍然很耗时。

于 2008-08-12T07:29:45.307 回答
1

显示九个随机几何形状怎么样,并要求用户选择两个正方形,或两个圆形或其他东西......应该很容易写,也很容易使用......

没有什么比无法正确阅读的文本更糟糕的了……

于 2008-08-14T13:25:45.970 回答
1

你看过韦吉斯吗?

“Waegis 是一种在线 Web 服务,它公开了一个开放的 API(应用程序编程接口)。它通过其 API 方法获取传入数据,并应用快速检查并及时识别垃圾邮件和合法内容。然后它将结果返回给客户端以指定是否内容是否为垃圾邮件。”

于 2008-08-15T16:46:52.467 回答
1

我认为他们正在努力进行节流。为具有 500+ 代表的用户禁用 CAPTCHA 并为攻击者重置代表会更有意义。

于 2008-08-15T19:09:46.360 回答
1

我最近(不记得在哪里)看到一个显示一堆图片的系统。每张图片都分配了一个角色。然后要求用户输入显示某些类别(汽车、计算机、建筑物、鲜花等)示例的一些图片的字符。每次更改图片和字符以及构建 CAPTCHA 字符串的类别。

唯一的问题是与此方法相关的更高带宽,并且您需要大量按类别分类的图片。无需浪费大量资源来生成图片。

于 2008-08-15T20:23:51.263 回答
1

我的建议是不使用图像的 ASCII 验证码,而且它是程序员/极客。这是一个 PHP 实现http://thephppro.com/products/captcha/这是一个付费的。有一个免费的 PHP 实现,但是我找不到示例 -> http://www.phpclasses.org/browse/package/4544.html

我知道这些是在 PHP 中的,但我相信你们构建 SO 的聪明人可以将它“移植”到你最喜欢的语言。

于 2008-08-22T09:09:26.647 回答
1

如前所述,在实施蜜罐验证码方法后,我们的表单垃圾邮件已大大减少。我相信自实施以来我们没有收到任何通知。

于 2008-08-28T20:46:33.710 回答
1

也许社区可以提出一些好的基于文本的验证码?

然后,我们可以根据得票最多的人提出一个好的列表。

于 2008-08-29T18:01:21.930 回答
1

Mollom是另一种可能感兴趣的askimet类型的服务。来自编写 drupal / run acquia 的人。

于 2008-09-02T20:58:07.433 回答
1

只是检查一下是否启用了 JavaScript 怎么样?

任何使用这个网站的人肯定会启用它。据人们所说,垃圾邮件机器人不会启用 JavaScript。

于 2008-09-09T16:57:01.977 回答
1

验证码检查您是人还是计算机。问题是在那之后计算机需要判断你是否是人。

所以一个解决方案是让一个用户填写一个验证码,然后让下一个用户检查它。问题当然是时间差。

于 2008-09-09T17:59:15.213 回答
1

我认为我们必须假设该站点将定期受到有针对性的攻击,而不仅仅是通用的漂移机器人。如果它成为程序员搜索的第一个热门,它会引起很大的轰动。

对我来说,这意味着任何 CAPTCHA 系统都不能从重复的问题列表中提取,除了机器人无法猜测之外,人类可以手动将其输入机器人。

于 2008-09-09T18:20:33.867 回答
1

很多这些 JavaScript 解决方案都可以与屏幕阅读器一起使用吗?减去有意义的 alt 属性的图像可能会破坏WCAG

于 2008-10-07T15:10:32.917 回答
1

我知道清除机器人的一种方法是将密钥存储在用户的 cookie 中,如果密钥或 cookie 不存在,则假定它们是机器人并忽略它们或退回到图像验证码中。这也是防止为机器人创建大量会话/跟踪的一种非常好的方法,这些会话/跟踪会给您的数据库增加大量噪音或对系统性能造成开销。

于 2008-10-07T15:55:30.690 回答
1

令人费解的一件事是谷歌,显然是世界上拥有最多 CS PHD 的公司,他们的验证码会被破解,而且似乎对此无动于衷。

于 2008-10-08T10:22:04.653 回答
1

将数学问题发布为图像,为了清楚起见,可能带有括号。

只是图像中清晰可见的文本。

(2+5)*2
于 2008-10-13T06:58:02.583 回答
1

您不仅希望人类发布。您需要可以讨论编程主题的人。所以你应该有一个琐碎的验证码,比如:

以下 C 函数声明是什么意思:char *(*(**foo [][8])())[];?

=)

于 2008-11-04T15:18:12.053 回答
1

这句话的第五个词是什么颜色?红色?蓝色,绿色?

(充分的颜色词)

于 2008-11-04T19:11:58.400 回答
1

我认为定制的验证码是你最好的选择。这样,它需要一个专门针对的机器人/脚本来破解它。这个努力因素应该会减少尝试的次数。人终究是懒惰的

于 2008-11-06T02:43:12.250 回答
1

我有几个解决方案,一个需要 JavaScript,另一个不需要。两者都比 7 + 4 更难击败,但在海报看来,它们并不像 reCaptcha 那样难。我想出了这些解决方案,因为我需要为 AppEngine 提供验证码,它提供了一个更受限制的环境。

无论如何,这里是演示的链接:http: //kevin-le.appspot.com/extra/lab/captcha/

于 2008-11-11T08:42:32.227 回答
1

图像可以在客户端从服务器传递的基于矢量的信息中创建。

这应该减少服务器上的处理和通过网络传递的数据量。

于 2008-12-28T22:07:49.247 回答
1

我推荐琐事问题。不是每个人都能理解字母的 ASCII 表示,并且具有多个操作的数学问题可能会让人感到困惑。

于 2008-12-29T01:02:49.190 回答
1

只使用 ASP.NET Ajax NoBot 怎么样?它似乎对我很有效。它不是很棒,但很体面。

于 2009-02-15T05:44:16.803 回答
1

我喜欢“伟大的 rom 网络”中使用的验证码: 链接文本

点击彩色的微笑,很有趣,每个人都能理解……除了机器人哈哈

于 2009-06-16T10:09:37.043 回答
1

只是把它扔在那里。我的一个联系表格上有一个简单的数学问题,它只是询问

[数字 1-12] + [数字 1-12] 是什么

我可能每个月可能会收到 5-6 封垃圾邮件,但我并没有收到那么多流量。

于 2009-07-09T03:15:49.140 回答
1

我真的很喜欢这个网站上使用的验证码方法:http ://www.thatwebguyblog.com/post/the_forgotten_timesaver_photoshop_droplets#commenting_as

于 2009-07-10T05:24:49.473 回答
1

当我看到一个关于人类计算的视频(视频是关于如何使用人类通过游戏标记图像)来构建一个验证码系统时,我有了一个想法。人们可以使用这样的系统来标记图像(可能用于其他目的),然后使用有关标签的统计信息来选择适合验证码使用的图像。

说一张图片,其中超过 90% 的人用“猫”或“摩天大楼”标记了该图片。然后可以呈现图像,询问图像最明显的特征,这将是图像的主要标签。

这可能超出了 SO 的范围,但有人可能会觉得这是一个有趣的想法 :)

于 2009-08-24T20:41:44.503 回答
1

这是我的验证码工作:

The security number is a spam prevention measure and is located in the box
of numbers below. Find it in the 3rd row from the bottom, 3rd column from
the left.

208868391   241766216   283005655   316184658   208868387   241766212   

241766163   283005601   316184603   208868331   241766155   283005593   

241766122   283005559   316184560   208868287   241766110   283005547   

316184539   208868265   241766087   283005523   316184523   208868249   

208868199   241766020   283005455   316184454   208868179   241766000   

316184377   208868101   241765921   283005355   316184353   208868077   

当然,数字是随机的,行和列的选择以及左/右上/下的选择也是如此。一位留下评论的人告诉我“安全问题很烂,顺便说一句”:

http://jwm-art.net/dark.php?p=louisa_skit

要查看实际操作,请单击“添加评论”。

于 2009-10-22T21:20:42.793 回答
1

我有一个收到大量垃圾邮件的 vBulletin 论坛。添加一个额外的规则解决了这一切;让人们输入单词的大写字母。由于我们的网站名为“TrefPuntMagic”,因此他们必须输入“TPM”。我知道它不是动态的,如果垃圾邮件发送者想真正向我们的网站发送垃圾邮件,他们可以解决问题,但我们只是他们针对的众多 vBulletin 论坛之一,这是一个简单的解决方法。

于 2010-04-21T10:11:22.050 回答
1

为什么不设置用户可以回答他们喜欢的语言的简单编程问题 - 然后在服务器上运行代码,看看它是否有效。通过在不同的随机文本上运行答案来避免人工验证码农场。

示例:“从-s = hihiuhi@ewfwef.cfwe 中提取域名”

用 Python 回答:“return = etc.”

其他子站点的类似领域特定知识。

所有这些都将具有可以自动测试但使用随机字符串或值进行测试的标准公式。

显然这个想法有很多缺陷;)

另外 - 每 5 分钟只允许一次登录尝试。

于 2010-10-25T09:16:16.167 回答
1

将其绑定到聊天室将是一种有趣的验证码。一种现场图灵测试。显然,它依赖于在线提问的人。

于 2010-10-25T09:35:59.493 回答
1

音频呢?提供一个带有说话声音的音频样本。让用户输入他听到的内容。这也可能是一种声音效果,可以被他识别出来。

作为奖励,这可以帮助语音识别器创建隐藏式字幕,就像 RECAPTCHA 帮助扫描书籍一样。

可能是愚蠢的......刚刚得到这个想法。

于 2010-10-25T21:59:57.483 回答
1

你试过http://sblam.com/en.html吗?据我所知,它是验证码的一个很好的替代品,而且对用户来说是完全透明的。

于 2010-11-04T10:19:03.583 回答
1

我认为比特币是一种非常实用的非基于图像的验证码——有关详细信息,请参见http://bitcoin.org

人们在注册时发送小额付款,确认后可以退回。你不会收回你花在试图找出验证码上的时间。

于 2011-01-10T13:25:20.553 回答
-3

一种选择是带外通信;服务器可以向用户发送即时消息(或 SMS 消息?),然后他/她必须在验证码字段中输入该消息。

这对用户提出了“非此即彼”的要求——要么您必须启用 JavaScript,要么您必须登录到您选择的 IM 服务。虽然它可能不像上述其他一些解决方案那样灵活,但它适用于绝大多数用户。

拥有编辑权限的人可以随意添加优点/缺点,而不是提交单独的回复。

优点:

  • 可访问性:许多 IM 客户端支持读取传入消息。一些基于 Web 的客户端将使用屏幕阅读器。

缺点:

  • 禁用 Javascript 的用户现在依赖于 OpenID 之上的另一个服务的正常运行时间。
  • 除非实施额外的保护措施,否则机器人将导致额外的服务器资源使用(发送带外通信)
于 2008-08-15T20:47:50.653 回答