如何确保只有人类访问者可以使用我的搜索字段?

时间:2012-11-10 16:55:04

标签: php forms captcha spam

我正在运行在线词典,让用户有机会搜索单词的翻译。现在我意识到,有很多搜索请求似乎没有人类输入。我不想添加某种Captcha,因为这会让人们拒绝使用我的网站。所以现在我想知道是否有办法在不使用验证码的情况下摆脱这些“垃圾邮件”搜索。我知道无法完全过滤请求,但我希望降低垃圾邮件请求的数量。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用用户代理列表/解析器并阻止访问该站点的每个机器人......但如果他们不想被检测到,那将不是万无一失的。

您可以在意识到他们不是人类之后手动阻止IP ......但这需要大量的工作和对网站和日志文件的关注。

您可以将搜索限制为每天几十次或在搜索之间设置必须的时间......但这可能会影响真实用户。

首次访问网站并将其存储在Cookie中时,您可以要求使用验证码,然后在所有后续搜索中检查该Cookie。

您可以使用Javascript在页面加载后创建表单和输入,这对于大多数仅在加载页面后立即读取页面的机器人来说可能不会出现。

您可以对可搜索的内容(最少4个字符等)设置一些限制,这可能会减少搜索次数。

答案 1 :(得分:0)

基于图像的CAPTCHA的简单替代方法是问一个问题是数学(1加5)还是普通英语(什么颜色是黑车?)

我会做什么创建问题的数据库表和问题的答案。越多越好。

然后当您随意加载搜索页面时,选择其中一个问题以显示给用户。

有一点需要注意的是,有些人可能会多次访问并刷新您的网站以了解所有可能的问题。然后,他们可以使用答案为您创建一个类似的数据库表,并将机器人指向该表以查找答案。

那说我认为它仍然是一个可行的替代方案,具有一点创造力。

答案 2 :(得分:0)

我知道最可靠的灵魂就是使用验证码。您应该知道有很多Captchas解决方案。换句话说,人眼会有简单的Captchas。例如: http://www.phpclasses.org/package/3949-PHP-Generate-CAPTCHA-validation-images-with-reload-.html