2 Stimmen

Wie deaktiviere ich die NoReverseMatch-Fehler-E-Mail auf dem Produktions-Server?

Heute Morgen hatte ich etwa 100 E-Mails in meinem Posteingang, in denen mir mitgeteilt wurde, dass verschiedene Seiten nicht vorhanden sind (ich vermute, dass ein Bot nach Sicherheitslücken sucht). Der Fehler lautet:

NoReverseMatch: Rückwärts für 'view_profile' mit Argumenten '('',)' und Schlüsselwortargumenten '{}' nicht gefunden.

Aber wenn ich die angegebene URL auf meinem Produktionsserver aufrufe, erhalte ich meine 404-Seite, genau wie erwartet, und es wird keine E-Mail gesendet. Warum/wie generieren diese Bots also (was ich vermute) einen internen Serverfehler? Und wie kann ich sie daran hindern?

Mein view_profile URL-Muster ist wie folgt definiert:

url(r'^(?P\d+)$', name="view_profile")

Das ist ein Untermuster von

RegexURLResolver(r'^kontakte/', 'profiles.views.user_profile'),

Es ist genau wie alle meine anderen URL-Muster definiert und erfordert eine ID, die übergeben werden muss... also weiß ich nicht, wie es ohne Argumente aufgerufen wird.

Der vollständige Traceback:

Rückverfolgung (letzter Aufruf zuletzt):

 Datei "/home/ich/meine/website/lib/python2.7/django/core/handlers/base.py", Zeile 150, in get_response
   response = callback(request, **param_dict)

 Datei "/home/ich/meine/website/lib/python2.7/django/utils/decorators.py", Zeile 93, in _wrapped_view
   response = view_func(request, *args, **kwargs)

 Datei "/home/ich/meine/website/lib/python2.7/django/views/defaults.py", Zeile 19, in page_not_found
   return http.HttpResponseNotFound(t.render(RequestContext(request, {'request_path': request.path})))

 Datei "/home/ich/meine/website/lib/python2.7/django/template/base.py", Zeile 123, in render
   return self._render(context)

 Datei "/home/ich/meine/website/lib/python2.7/django/template/base.py", Zeile 117, in _render
   return self.nodelist.render(context)

 Datei "/home/ich/meine/website/lib/python2.7/django/template/base.py", Zeile 744, in render
   bits.append(self.render_node(node, context))

 Datei "/home/ich/meine/website/lib/python2.7/django/template/base.py", Zeile 757, in render_node
   return node.render(context)

 Datei "/home/ich/meine/website/lib/python2.7/django/template/loader_tags.py", Zeile 127, in render
   return compiled_parent._render(context)

 Datei "/home/ich/meine/website/lib/python2.7/django/template/base.py", Zeile 117, in _render
   return self.nodelist.render(context)

 Datei "/home/ich/meine/website/lib/python2.7/django/template/base.py", Zeile 744, in render
   bits.append(self.render_node(node, context))

 Datei "/home/ich/meine/website/lib/python2.7/django/template/base.py", Zeile 757, in render_node
   return node.render(context)

 Datei "/home/ich/meine/website/lib/python2.7/django/template/defaulttags.py", Zeile 311, in render
   return self.nodelist_true.render(context)

 Datei "/home/ich/meine/website/lib/python2.7/django/template/base.py", Zeile 744, in render
   bits.append(self.render_node(node, context))

 Datei "/home/ich/meine/website/lib/python2.7/django/template/base.py", Zeile 757, in render_node
   return node.render(context)

 Datei "/home/ich/meine/website/lib/python2.7/django/template/defaulttags.py", Zeile 450, in render
   raise e

NoReverseMatch: Rückwärts für 'view_profile' mit Argumenten '('',)' und Schlüsselwortargumenten '{}' nicht gefunden.

,
POST:,
COOKIES:{'csrftoken': '89867bc39db49a791bb24dce06e26b6f',
 'sessionid': 'd0db456ae01005678d1538b00ae26dd1'},
META:{'CSRF_COOKIE': '89867bc39db49a791bb24dce06e26b6f',
 'DOCUMENT_ROOT': '/usr/local/apache2/htdocs',
 'GATEWAY_INTERFACE': 'CGI/1.1',
 'HTTP_ACCEPT': '*/*',
 'HTTP_CONNECTION': 'close',
 'HTTP_COOKIE': 'csrftoken=89867bc39db49a791bb24dce06e26b6f; sessionid=d0db456ae01005678d1538b00ae26dd1',
 'HTTP_HOST': 'myproject.net',
 'HTTP_USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; Zango 10.3.75.0)',
 'HTTP_X_FORWARDED_FOR': '39.47.147.220',
 'HTTP_X_FORWARDED_HOST': 'myproject.net',
 'HTTP_X_FORWARDED_SERVER': 'myproject.net',
 'PATH_INFO': u'/web/',
 'PATH_TRANSLATED': '/home/ich/meine/website/myproject.wsgi/web/',
 'QUERY_STRING': '',
 'REMOTE_ADDR': '127.0.0.1',
 'REMOTE_PORT': '40577',
 'REQUEST_METHOD': 'GET',
 'REQUEST_URI': '/web/',
 'SCRIPT_FILENAME': '/home/ich/meine/website/myproject.wsgi',
 'SCRIPT_NAME': u'',
 'SERVER_ADDR': '127.0.0.1',
 'SERVER_ADMIN': '[no address given]',
 'SERVER_NAME': 'myproject.net',
 'SERVER_PORT': '80',
 'SERVER_PROTOCOL': 'HTTP/1.0',
 'SERVER_SIGNATURE': '',
 'SERVER_SOFTWARE': 'Apache/2.2.17 (Unix) mod_wsgi/3.3 Python/2.7.1',
 'mod_wsgi.application_group': 'my.server.com|',
 'mod_wsgi.callable_object': 'application',
 'mod_wsgi.handler_script': '',
 'mod_wsgi.input_chunked': '0',
 'mod_wsgi.listener_host': '',
 'mod_wsgi.listener_port': '54084',
 'mod_wsgi.process_group': '',
 'mod_wsgi.request_handler': 'wsgi-script',
 'mod_wsgi.script_reloading': '1',
 'mod_wsgi.version': (3, 3),
 'wsgi.errors': ,
 'wsgi.file_wrapper': ,
 'wsgi.input': ,
 'wsgi.multiprocess': False,
 'wsgi.multithread': True,
 'wsgi.run_once': False,
 'wsgi.url_scheme': 'http',
 'wsgi.version': (1, 1)}>

Zum Schutz der Unschuldigen umbenannte Pfade.

1voto

Dmitry Shevchenko Punkte 30176

Irgendwo (vermutlich in den Vorlagen) löst du view_profile statt mit einer leeren Zeichenfolge mit einer ID auf. Finde heraus, warum das passiert und behebe es

1voto

Burhan Khalid Punkte 161333

Es könnte sein, dass der Bot einfach alle mappbaren URLs anfordert (wie es ein Website-Crawler tun würde) und keine Redirect-Anfragen oder Cookies respektiert.

0voto

U-DON Punkte 2052

Sie möchten möglicherweise eine robots.txt-Datei verwenden, um Bots abzuwehren. Fügen Sie dies Ihrer Haupt-urls.py-Datei hinzu. DISALLOW_ROBOTS sollte in der settings.py-Datei für die Entwicklungsumgebung auf True eingestellt sein.

if settings.DISALLOW_ROBOTS:
    urlpatterns += patterns('',
        (r'^robots\.txt$', lambda r: HttpResponse("User-agent: *\nDisallow: /", mimetype="text/plain")),
    )
else:
    urlpatterns += patterns('',
        (r'^robots\.txt$', lambda r: HttpResponse("User-agent: *\nDisallow: ", mimetype="text/plain")),
    )

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X