この記事の目的
DjangoでクライアントのIPアドレスを取得する関数の実装方法がわかる
使用技術
python = 3.11.2
Django = 4.2.3
では早速該当の関数を見てみよう
sample.py
def get_client_ip(request):
"""クライアントのIPアドレスを取得"""
x_forwarded_for = request.META.get("HTTP_X_FORWARDED_FOR")
if x_forwarded_for:
ip = x_forwarded_for.split(",")[0]
else:
ip = request.META.get("REMOTE_ADDR")
return ip
クライアントのIPアドレスを取得することはセキュリティやトラッキングの目的で役立つことがあります
取得方法はクライアントがプロキシサーバーを経由しているか否かで決まる
- プロキシサーバーを経由している場合
-
HTTP_X_FORWARDED_FOR
から取得する
-
- プロキシサーバーを経由していない場合
-
REMOTE_ADDR
から取得する
-
プロキシサーバー(NginxやApache等)が使用されている場合、HTTP_X_FORWARDED_FOR
ヘッダーを参照します
このヘッダーが存在する場合、その最初の要素がクライアントの実際のIPアドレスになります