Frage

Ich entwickle eine Image Bank-Site, auf der lizenzfreie Bilder zum Download enthalten sind. Ich möchte jeden verlangsamen, der einen Bot verwendet oder zu oft heruntergeladen wird, daher habe ich ein tägliches Dateilimit und habe einen variablen Schlaf in das Skript, das die Dateien liefert. Ich mache das, indem ich die Abschlusszeit des letzten Downloads in eine Datenbank schreibe und dann die verstrichene Zeit überprüfe, wenn der nächste Download beginnt. Wenn das weniger als n Sekunden ist, verzögere ich den Download um m Sekunden und verdopple M bei aufeinanderfolgenden Verstößen. Das funktioniert gut, bis das Skript das Ausführungszeitlimit des Servers erreicht.

Mein Hosting -Unternehmen bestätigt, dass die Schlafzeit für die Ausführungszeit zählt.

Bin ich in der Entwicklungsphase überbewusst?

Irgendwelche Vorschläge, wie Sie Benutzer erkennen und verlangsamen können, die die Website missbrauchen, ohne PHP -Schlaf zu verwenden?

War es hilfreich?

Lösung

Ich glaube nicht, dass du überbewusst bist, aber ich tun Denken Sie, dass dies ein schlechter Weg ist, um vorsichtig zu sein. Wenn die Schlafzeit für die Ausführungszeit zählt, zahlen Sie dann nicht dafür? Es zählt wahrscheinlich auch auf die Nutzung von CPU und eine Reihe anderer Kostenfaktoren. Darüber hinaus gibt es Ihrem Benutzer langsam, dass der Service langsam ein Hinweis darauf gibt, dass er etwas falsch macht, sondern dass Ihr Service nur langsam erscheint.

Sie wären wahrscheinlich besser dran, ein freundliches Nachrichtenbild zu dienen, um der Person wissen zu lassen, was vor sich geht, damit sie ihr Verhalten ändern können (dies ist besonders gut, da einige Leute es möglicherweise zufällig auslösen, während sie völlig unschuldige Aktivitäten ausführen). Wenn sie darauf bestehen, Ihr Nachrichtenbild mehr als fünf oder zehn Mal zu bedienen, ist es definitiv ein Skript. Hören Sie also auf, ihre Anfragen vollständig zu beantworten.

Andere Tipps

Warum machen Sie den Benutzer nicht einfach darauf aufmerksam, was er/sie "falsch" macht und einen Fehler anzeigen?

Auf diese Weise wird der Benutzer wissen, was los ist, und könnte sich entscheiden, das Verhalten zu korrigieren. Bei zufälligen Verzögerungen würde ich vermuten, dass etwas mit Ihrem Server nicht stimmt und vielleicht nur nach einem konkurrierenden Angebot suchen, das stabiler funktioniert.

Verwenden Sie einen DIV mit einem Zeitzähler und implementieren Sie diesen Zeitmechanismus in javaScript.example: (www.rapidshare.com) Wenn die Schlafzeit als Ausführungszeit gezählt wird, bedeutet dies, dass Sie eine ziemlich hohe Chance haben, das Ausführungszeitlimit zu überschreiten.

Wenn eine Verzögerung viel länger als das Zeitlimit der Skriptausführung ist, möchten Sie diesen Benutzer möglicherweise für einen bestimmten Zeitraum (24 Stunden?) Blockieren.

Wie entscheiden Sie genau, wer aggressiv heruntergeladen wird? Die IP -Adresse ist nicht 100% zuverlässig, da Sie möglicherweise eine Reihe von Personen hinter NAT haben, die alle aus derselben IP -Adresse stammen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top