Skip to main content

Detect and block fake search bots 🤖

Project description

django-fake-bot-detector

Detect and block fake search bots 🤖

Overview

Many nefarious internet bots, knowing they are not welcome, like to fake their user-agent string so they can pretend they're just a friendly search bot (e.g. GoogleBot) hitting your site.

Fortunately the major search bots are all verifiable by performing a reverse DNS lookup against the request IP and checking the returned domain matches the expected domain (e.g. crawl-66-249-66-1.googlebot.com). This simple middleware for Django does exactly that.

Installation

Install from PyPI:

pip install django-fake-bot-detector

Add the middleware in settings.py:

MIDDLEWARE = [
    ...
    'fakebotdetector.middleware.FakeBotDetectorMiddleware',
    ...
]

Settings

You can use the following in your settings.py

Name Description Default
FAKE_BOT_DETECTOR_ENABLED Enables the fake bot detector True
FAKE_BOT_RESPONSE_CODE The HTTP status code to send for blocked requests 403

Pro tip: if you are running django behind an NGINX proxy, you can set FAKE_BOT_RESPONSE_CODE to 444 to have NGINX close the connection immediately without sending an HTTP response at all.

Django Signals

A fake_bot_hit signal is sent every time the middleware blocks a bot.

To listen for the signal, set up a receiver:

from django.dispatch import receiver
from fakebotdetector.signals import fake_bot_hit

@receiver(fake_bot_hit)
def fake_bot_hit_receiver(sender, bot_ip, bot_useragent, fqdn_expected, fqdn_received, **kwargs):
    print('Received a fake bot hit from {}'.format(bot_ip))

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-fake-bot-detector-0.2.tar.gz (3.9 kB view details)

Uploaded Source

File details

Details for the file django-fake-bot-detector-0.2.tar.gz.

File metadata

  • Download URL: django-fake-bot-detector-0.2.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/39.1.0 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.1

File hashes

Hashes for django-fake-bot-detector-0.2.tar.gz
Algorithm Hash digest
SHA256 6a13b29812405c1430f522e973cc1dc1995bf8e2fc8915137b624fe102bb8cca
MD5 ab4e6b5b0b0c7aa5e1f49014b672347b
BLAKE2b-256 247a1abeef8a23a43f0d2cbc38e564e799aecba8b80bffe46839a25b7dc82d94

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page