停止机器人没有验证码 - 扭曲

时间:2011-12-18 05:14:18

标签: php mysql html macros bots

这与此主题的其他问题不同。尽管这是一个相当具体的问题,但我会尽量让这与尽可能多的人相关。

想象一下网站上的一个按钮(html按钮),在点击了一定次数之后,会给用户一个“点”。这些点存储在许多用户的数据库中,这些点可以在帐户之间传输。 我不希望有人只是制作一个快速宏来在他们睡觉时继续点击按钮,所以我需要某种解决方案。以下是我认为具有一定潜力的选项:

  1. 每次想要点击按钮时都要使用recaptcha(痛苦)。
  2. 使用cookies和recaptcha使它们允许10次点击(比方说),但随后要求重新验证。 (他们可以删除cookie)。
  3. 使用不太痛苦的验证码替代品。
  4. 和其他'不确定'的想法:
    - 只需在页面上移动按钮,结合其他一些偷偷摸摸的策略 - 当用户按下按钮时,他们需要提交某种拼图,用于检查其他人是否是人。

    你怎么看? 此外,是否有可能让积分系统几乎100%不可攻击/不可摧毁?系统安全非常重要。你有这样的想法可以解决任何潜在的问题吗?

    感谢。

3 个答案:

答案 0 :(得分:4)

而不是按钮,使用目标制作可点击的图像。使图像动态化,目标在页面的其他位置指定(可能在图像上方)。因此,例如,有一次它可以是“点击正方形”,图中显示正方形和三角形。下一次可能是“在圆圈外点击”,在图像的下半部分有一个圆圈。可能性是无止境。 (我不想使用颜色作为唯一的线索,出于对色盲的考虑。)任何机器人都必须知道要发回哪些坐标来模拟鼠标在正确的目标区域中点击。

答案 1 :(得分:3)

我认为不可能使任何系统100%无法制造。也就是说,你可以让用户很难“宏观”它。

您可以使用这些解决方案的组合。

a)您可以设置一个隐藏的表单字段,其中包含""值,您可以在提交时查看该字段以查看该值。机器人通常通过用数据填充每个表单字段来进入,这样就可以解决这些问题。

b)您可以使用javascript检查鼠标是否实际被点击过。

c)(我不知道这是否可行)但您可以检查鼠标是否在最后X秒内完全移动了。任何人(希望)每隔几秒就会使用他们的鼠标。

d)每X次点击添加验证码。

还有更多这样的东西。

答案 2 :(得分:1)

我个人将其设置为:

  1. 在同一会话中连续10次点击后,输入用户 某种数学检查(即产生2个随机数,制作 用户一起添加/减去它们并在输入中键入答案 框)。

  2. 每20次点击就会要求填写验证码。

  3. 重置计数器。这允许系统总是给它们一些 每10次连续点击一次检查。

  4. 一个不引人注目的系统很难创建。

    除此之外你可以:

    • 每分钟仅允许一定量的点击次数
    • 针对数据库中的每个用户存储平均点击次数/分钟,以便您可以查看并取消资格/删除滥用系统的用户的点数。