检测并阻止假搜索机器人

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无法使用JSF访问托管bean方法   java是制作具有多值类型的HashMap的正确方法   javafx中TicTacToe的java更新UI   windows Java文件。getCanonicalFile()无法处理冒号“:”   java在一个布局屏幕中创建多个(26)按钮   java Android Studio:Gradle构建完成,有251个错误   我们如何在Java上为callfireapiclient编写单元/集成测试?   java无法将1715UTC转换为本地/gmt类型   具有已定义的数字序列的JAVA循环   Java程序正在netbeans中编译,但未在CMD中编译,包不存在   java Android构造函数和onCreate()之间有什么区别?   java配置弹性搜索结果评分   java LibGDX纹理是否可绘制?   java如何在Android中设置应用程序默认打开pdf   java是否有一种创造性的方法将多个参数传递给contentEquals()方法?   java在Android上存储Ed25519私钥