0

我正在开发一个图片库网站,该网站将保存免版税图片以供下载。我想减慢使用机器人或经常下载的任何人的速度,因此我有每日文件限制,并将变量 sleep 合并到传递文件的脚本中。我通过将最后一次下载的完成时间写入数据库,然后检查下一次下载开始时的经过时间来做到这一点。如果那小于 N 秒,那么我将下载延迟 M 秒,连续违规时将 M 加倍。在脚本达到服务器的执行时间限制之前,它可以正常工作。

我的托管公司确认睡眠时间计入执行时间。

我在开发阶段是否过于谨慎?

关于如何在不使用 php sleep 的情况下检测和减慢滥用网站的用户的任何建议?

4

4 回答 4

3

我不认为你过于谨慎,但我确实认为这是一种谨慎的坏方法。如果睡眠时间计入执行时间,您不为此付费吗?它可能也计入 CPU 使用率和许多其他成本因素。此外,缓慢地关闭服务不会给您的用户任何迹象表明他们做错了什么,它只会让您的服务看起来很慢。

You'd probably be better off serving a friendly message-image letting the person know what's going on so they can modify their behavior (this is particularly good given that some people might trigger it by accident while performing completely innocent activities). If they insist on serving your message-image more than five or ten times, then it's definitely a script, so just stop answering their requests entirely.

于 2009-10-08T08:12:13.877 回答
2

为什么不简单地让用户知道他/她在做什么“错误”并显示错误?

这样,用户将知道发生了什么并可能决定纠正该行为。如果出现随机延迟,我会怀疑您的服务器有问题,也许只是寻找更稳定的竞争产品。

于 2009-10-08T08:06:30.073 回答
0

使用带时间计数器的 div 并在 javascript.example 中实现此时间机制: (www.rapidshare.com) 如果将睡眠时间计为执行时间,则意味着您很有可能超过执行时间限制。

于 2009-10-08T08:05:15.700 回答
0

如果任何一个延迟比脚本执行超时时间长得多,您可能希望完全阻止该用户一段时间(24 小时?)。

您如何确定谁在积极下载?IP 地址并非 100% 可靠,因为您可能在 NAT 后面有许多人似乎都来自同一个 IP 地址。

于 2009-10-08T08:05:27.993 回答