Excessive 404 Middleware

class smarter.lib.django.middleware.excessive_404.SmarterBlockExcessive404Middleware(get_response, *args, **kwargs)[source]

Bases: SmarterMiddlewareMixin

Middleware that throttles unauthenticated clients producing excessive 404s.

This mitigates: - automated scanners - brute-force URL probing - broken crawlers - vulnerability enumeration attempts

async async_process_response(request, response)[source]

Async entry point for ASGI deployments.

Return type:

HttpResponseBase

property formatted_class_name: str

str(object=’’) -> str str(bytes_or_buffer[, encoding[, errors]]) -> str

Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.__str__() (if defined) or repr(object). encoding defaults to ‘utf-8’. errors defaults to ‘strict’.

increment_throttle(throttle_key)[source]

Increment the client’s 404 counter.

Return type:

None

is_ignored_path(path)[source]

Determine whether 404s on this path should never count toward the throttle.

Parameters:

path (str) – The request path.

Returns:

True for amnesty urls and JSON schema lookups.

Return type:

bool

log_404_event(request, client_ip, blocked_count)[source]

Sample logs to reduce spam during bot scans.

Return type:

None

process_response(request, response)[source]

Sync response middleware entry point.

Return type:

HttpResponseBase