0

ロイヤリティフリーの画像をダウンロードできる画像バンクサイトを開発中です。ボットを使用しているユーザーや頻繁にダウンロードしているユーザーの速度を落としたいので、1 日のファイル制限を設定し、ファイルを配信するスクリプトに可変スリープを組み込みました。前回のダウンロードの完了時刻をデータベースに書き込み、次のダウンロードが開始されたときに経過時間を確認します。それが N 秒未満の場合、M 秒だけダウンロードを遅らせ、連続する違反で M を 2 倍にします。スクリプトがサーバーの実行時間制限に達するまで、これは正常に機能します。

私のホスティング会社は、スリープ時間が実行時間にカウントされることを確認しています。

開発段階で慎重すぎませんか?

PHPスリープを使用せずにサイトを悪用しているユーザーを検出してスローダウンする方法について何か提案はありますか?

4

4 に答える 4

3

あなたが過度に用心深いとは思いませんがこれは用心深くなる悪い方法だと思います。スリープ時間が実行時間にカウントされる場合、その分を支払っていませんか? おそらく、CPU 使用率やその他の多くのコスト要因にもカウントされます。さらに、サービスをゆっくりと停止しても、ユーザーが何か間違ったことをしているという兆候はありません。サービスが遅く見えるだけです。

おそらく、友好的なメッセージ画像を提供して、何が起こっているかをその人に知らせて、行動を修正できるようにする方がよいでしょう (これは、まったく無害なアクティビティを実行しているときに偶然にそれをトリガーする人がいる可能性があることを考えると特に良いことです)。彼らがあなたのメッセージ画像を 5 回または 10 回以上提供することを主張する場合、それは間違いなくスクリプトであるため、彼らの要求に完全に応答するのをやめてください。

于 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 に答える