Flaskのアクセスログを見ていると半分以上がbotのアクセスであった。さらに、過去に生成して、時間経過のために消去した一時ファイルを参照していたりするので、ことごとくエラーになり、無駄な処理をさせられまくっていたので特にしつこくアクセスしてくるIPは一括でブロックすることにした。
from flask import Flask, request, abort app = Flask(__name__) # ブロックしたいIPアドレスのプレフィックスを指定 BLOCKED_IP_PREFIXES = ['85.208.96.', '185.191.171.'] @app.before_request def block_ip(): # アクセス元IPアドレスを取得 remote_ip = request.remote_addr # ブロックされたIPアドレスの場合は403 Forbiddenを返す for prefix in BLOCKED_IP_PREFIXES: if remote_ip.startswith(prefix): abort(403) # 通常のルート @app.route('/') def index(): return 'Welcome to the site!' if __name__ == '__main__': app.run(debug=True)
こんな感じ。
とりあえず403をすぐ打ち返し、スクリプトに入らないようにした。これで多少はトラフィックが減ってくれるといいのだが。でもこれはきっといたちごっこになるんだろうな。