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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a13b29812405c1430f522e973cc1dc1995bf8e2fc8915137b624fe102bb8cca
|
|
| MD5 |
ab4e6b5b0b0c7aa5e1f49014b672347b
|
|
| BLAKE2b-256 |
247a1abeef8a23a43f0d2cbc38e564e799aecba8b80bffe46839a25b7dc82d94
|