检测并阻止假搜索机器人

django-fake-bot-detector的Python项目详细描述


Django假机器人探测器

检测并阻止假搜索机器人程序

概述

许多邪恶的网络机器人知道自己不受欢迎,就喜欢假冒他们的用户代理。 字符串,这样他们就可以假装只是一个友好的搜索机器人(例如GoogleBot)攻击你的网站

幸运的是,通过对 请求IP并检查返回的域是否与预期的域匹配 (例如crawl-66-249-66-1.googlebot.com)这个简单的django中间件正是这样做的。

安装

从pypi安装:

pip install django-fake-bot-detector

settings.py

中添加中间件
MIDDLEWARE = [
    ...
    'fakebotdetector.middleware.FakeBotDetectorMiddleware',
    ...
]

设置

您可以在设置中使用以下选项.py

NameDescriptionDefault
FAKE_BOT_DETECTOR_ENABLEDEnables the fake bot detectorTrue
FAKE_BOT_RESPONSE_CODEThe HTTP status code to send for blocked requests403

pro提示:如果您在nginx代理后面运行django,则可以将fake_bot_response_code设置为444 NGINX立即关闭连接,而不发送HTTP响应

Django信号

每次中间件阻止bot时,都会发送一个fake_bot_hit信号。

要监听信号,请设置接收器:

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))

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在Android上的可访问文件夹中创建文件?(非根)   tomcat Unix脚本未使用Process Runtime在Java中运行   模拟器中的java Android AudioTrack速度异常   java是否创建具有特定@ConditionalOnProperty的注释?   java如何使用json数据从gridview中的URL加载图像?(类别和子类别)   ConcurrentHashMap的java锁定值对象   如何在具有额外属性的Java枚举上执行Javadoc?   java如何修复SocketException连接重置问题?   无附加表的java JPA实体继承   java Android应用程序在启动屏幕后崩溃   java如何将Arraylist保存到文件?   java restTemplate从restfull Web服务获取文件数组   java活动带布局隐藏导航栏   socket未接收任何内容的java BufferedReader