Django爬虫類リクエストをブロック

2309 ワード

1.はじめに
時には自分で書いたサイトが爬虫類に這われることを望んでいないかもしれません.この場合、Djangoのミドルウェアを使用して完了する必要があります.前の文章では中間部品の具体的な配置について述べた.Djangoミドルウェア実装ブロッキング
2.遮断器部分の具体的な実現
ここではHTTPのUserAgentフィールドを用いて判断するが,一部の爬虫類が自身のUserAgentのパラメータを修正してサーバを欺く場合があり,この場合はブロックできない.ミドルウェアの具体的な実装:
from django.http.response import HttpResponseNotFound

try:
    from django.utils.deprecation import MiddlewareMixin  # Django 1.10.x
except ImportError:
    MiddlewareMixin = object  # Django 1.4.x - Django 1.9.x

class SimpleMiddleware(MiddlewareMixin):
    def process_request(self, request):
        http_user_agent = request.META.get('HTTP_USER_AGENT')
        # remote_addr = request.META.get('REMOTE_ADDR')
        http_user_agent = str(http_user_agent).lower()

        if "py" in http_user_agent or "ssl" in http_user_agent:
            return HttpResponseNotFound(content="

Not Found

The requested URL "

request.path_info " was not found on this server.") return None def process_response(self, request, response): return response

3.具体的な効果
爬虫類がアクセスすると、404インタフェースしか取得できません.図に示すように、