Frage

Ich habe eine nette und schöne Django-Website und läuft, aber habe bemerkt, dass meine error.log Datei wurde immer riesig, mehr als 150 MB nach ein paar Monaten leben zu sein. Stellt sich ein Bündel aus Spambots sind für gut bekannte URL Lücken suchen (oder etwas) und eine Reihe von Unterverzeichnissen wie http://mysite.com/ie Schlagen oder http://mysite.com/~admin.php usw.

Da Django URL-Rewriting verwendet, es sucht Vorlagen diese Anforderungen zu passen, die eine TemplateDoesNotExist Ausnahme auslöst, und dann eine 500-Nachricht (Django tut dies, mich nicht). Ich habe Debug ausgeschaltet, so dass sie nur die generische 500 Nachricht erhalten, aber es ist meine Protokolle sehr schnell füllen.

Gibt es eine Möglichkeit, dieses Verhalten zu deaktivieren? Oder vielleicht nur die IP blockieren dies tut?

War es hilfreich?

Lösung

Um vielleicht benutzen logrotate zu drehen und die Protokolle in regelmäßigen Abständen zu komprimieren, wenn es isn ‚t bereits getan wird.

Andere Tipps

„Gibt es eine Möglichkeit, dieses Verhalten zu deaktivieren?“ - die 500 ist zwingend erforderlich. Der Protokolleintrag ist auch zwingend notwendig.

„Oder vielleicht blockiert nur die IP-Adressen dies zu tun?“ - nicht wünschen

.

Jeder hat dieses Problem. Fast jeder nutzt Apache Logfolge . Alle anderen verwendet entweder eine OS-Rotation oder rollt ihre eigenen.

Wenn Sie ein Muster in Useragent-String finden können, können Sie DISALLOWED_USER_AGENT Einstellung verwenden. Meine ist:

DISALLOWED_USER_AGENTS = (
    re.compile(r'Java'),
    re.compile(r'gigamega'),
    re.compile(r'litefinder'),
)

Siehe Beschreibung in Django docs .

Django sollte 404 nicht 500 werfen, wenn die URL keine Einträge in Ihrer URLconf entspricht.

http://docs.djangoproject.com/en/ dev / Themen / http / Urls / # handler404

Sie benötigen eine 404-Vorlage zur Verfügung zu stellen:

  

Wenn Sie nicht Ihren eigenen 404-View definieren - und einfach die Standardeinstellung verwenden, was empfohlen wird - haben Sie immer noch eine Verpflichtung: eine 404.html Vorlage in der Wurzel Ihres Template-Verzeichnisses zu erstellen. Die Standard-404-Ansicht wird diese Vorlage für alle 404-Fehler verwendet werden.

Eine Programmier Lösung wäre:

  • Öffnen Sie die Protokolldatei
  • lesen Sie die Zeilen in einem Puffer
  • ersetzen Sie die Linien, die die Fehler die Bots passen verursacht
  • an den Anfang der Datei
  • suchen
  • schreiben Sie den neuen Puffer
  • die Länge der Datei in die aktuelle Zeigerposition
  • schließen

Voila! Es ist geschafft!

Wie sei es ein allumfassendes Muster als das letzte Element in Ihrer urls Datei und es zu einer allgemeinen „keiner solchen Seite“ oder sogar Ihre Homepage zu leiten? Mit anderen Worten, wenden 500er in Anfragen für Ihre Homepage.

Warum nicht beheben diese „Fehler“? Wenn ein URL-Muster nicht übereinstimmt, dann sollte eine entsprechende Fehlermeldung angezeigt. Durch diese Vorlagen wird das Hinzufügen zu helfen und sich selbst: -)

  1. Ja, es sollte ein 404 sein, keine 500 500 zeigt etwas versucht, mit der URL zu behandeln und wird in dem Prozess scheitern. Sie müssen finden und das in Ordnung bringen.

  2. Wir haben ein ähnliches Problem. Da wir Apache / mod_python laufen, entschied ich mich mit ihm in .htaccess mit mod_rewrite Regeln zu behandeln. Ich sehe regelmäßig in den Protokollen und fügen Sie „in die Hölle gehen“ -Liste ein paar Muster zu meinen. Diese alle neu schreiben eine 1x1-Pixel-GIF-Datei zu liefern. Es gibt keinen Tsunami von 404s meine Logauswertung verunstaltet und es setzt eine minimale Belastung auf Django und Apache.

Sie können nicht diese a ** Löcher weggehen, so alles, was Sie tun können, ist ihre Auswirkungen auf Ihrem System minimieren und mit Ihrem Leben auf.

scroll top