1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Django] クライアントのIPアドレスを取得してみよう!

Posted at

この記事の目的

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アドレスを取得することはセキュリティやトラッキングの目的で役立つことがあります

取得方法はクライアントがプロキシサーバーを経由しているか否かで決まる

  1. プロキシサーバーを経由している場合
    1. HTTP_X_FORWARDED_FORから取得する
  2. プロキシサーバーを経由していない場合
    1. REMOTE_ADDRから取得する

プロキシサーバー(NginxやApache等)が使用されている場合、HTTP_X_FORWARDED_FORヘッダーを参照します
このヘッダーが存在する場合、その最初の要素がクライアントの実際のIPアドレスになります

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?