【问题标题】:How do I stop spam / bots from hitting my rest api?如何阻止垃圾邮件/机器人访问我的 rest api?
【发布时间】:2014-09-27 09:03:34
【问题描述】:

我有一个用户点击我制作的游戏的按钮。每次用户单击按钮时,它都会向我的 rest api 发送一个请求,增加一个计数器,将计数存储在我的数据库中并返回。游戏的目标是尽可能多地点击按钮。

请求如下所示:

    $.ajax({
      type: 'POST',
      url: '/increment',
      success: handleSuccess
    }

我担心的是有人编写了一个脚本,该脚本会向/increment 休息端点发送垃圾邮件并提高他们的分数。

虽然我想使用captcha,但我担心这会使我的网站难以使用并且看起来很糟糕。

还有其他方法可以阻止脚本/机器人/垃圾邮件发送者访问我的休息端点吗?

【问题讨论】:

  • 您可以尝试使用robots.txt 文件 (robotstxt.org/robotstxt.html)。那个,或者需要某种“人工验证”cookie。
  • 您可能需要使用验证码登录,然后允许该登录用户正常访问-
  • @CaseyFalk Spammers 完全忽略 robots.txt。

标签: ajax rest captcha bots spam


【解决方案1】:

如果无法为您的用户请求登录或解决验证码,您也可以记录该请求的 IP,如果再次由该 IP 完成,则停止增加一段时间(例如 24 小时)。为了给您的人类用户带来一些便利,如果 on 在您的时间限制内再次点击它,您也会发送一条警告消息。

此方法并不完美,因为在大型大学或公司网络中可能有更多用户共享一个 IP 地址,但根据您的受众,此方法可能就足够了。它是一种折衷方案,在方便(无需登录/验证码)和无垃圾邮件(某些用户在极少数情况下无法保存他们的分数)之间进行权衡,效果应该足够好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-12
    • 2011-10-31
    • 2021-03-05
    • 2012-06-12
    • 1970-01-01
    • 2014-10-22
    • 2012-10-20
    • 2019-01-04
    相关资源
    最近更新 更多