Pythonを使用して自分のグローバルIPアドレスを確認する方法

Pythonを使用して自分のグローバルIPアドレスを確認する方法 プログラミング

インターネットに接続するデバイスの公開IPアドレスを把握することは、セキュリティの強化に不可欠です。
ファイアウォールの設定には、特定のIPアドレスからのアクセスを許可する必要があります。

APIテストを行う際には、外部APIがIPベースでアクセス制限をしていることがあります。
リモートサーバーへの安全なアクセスには、自身のIPアドレスを許可リストに追加する必要がある場合があります。

地域制限の確認やアカウントセキュリティの監視にも、自身のIPアドレスを知ることが役立ちます。
この記事では、グローバルIPアドレスを簡単に知る方法としてPythonコードを紹介します。

プログラム(Python)によるIPアドレスの取得

Pythonスクリプトを用いて自分のグローバルIPアドレスを取得する方法を紹介します。
urllib.requestモジュールを利用し、外部のサービスからIPアドレスを取得する簡単なコード例を示します。

このプロセスは非常にシンプルです。
Pythonがインストールされている環境であれば、誰でもすぐに試すことができます。

以下が、そのコードになります。

from urllib.request import urlopen
import json

# APIのURL
url = "https://api.ipify.org?format=json"

# URLを開いて、レスポンスを読み込む
with urlopen(url) as response:
    data = response.read().decode("utf-8")

# JSONデータをパースしてIPアドレスを取得
ip_address = json.loads(data)["ip"]

# IPアドレスを表示
print(f'Your outbound IP address is: {ip_address}')

上記を実行すると、コンソールに次のように表示されます。

Your outbound IP address is: 123.123.123.123

これは、プログラムを実行する環境のグローバルIPとなります。
サーバーでこのプログラムを実行すると、そのサーバーのグローバルIPが表示されます。

また、AWS Lambda関数で同じことを行う場合は以下のコードとなります。

from urllib.request import urlopen
import json

def lambda_handler(event, context):
    with urlopen("https://api.ipify.org?format=json") as response:
        data = response.read().decode("utf-8")
    ip_address = json.loads(data)["ip"]
    return {
        'statusCode': 200,
        'body': f'Outbound IP address: {ip_address}'
    }

実際にLambdaで実行した結果は、以下。

Response
{
  "statusCode": 200,
  "body": "Outbound IP address: 3.107.10.79"
}

このIPアドレスは、オーストラリアにありますね。

確かに、選択しているリージョンと同じです。

なお、このIPアドレスは固定ではありません。
明日実行したら、また異なるIPアドレスになっているかもしれません。

ipify – A Simple Public IP Address API

 https://api.ipify.org

コードに上記のURLが記載されていました。
このURLは、ipifyのURLとなります。

ipifyは、開発者が容易に利用できる公開IPアドレス取得用のシンプルなAPIです。
このサービスは、プログラムからのHTTPリクエストに応じて、
ユーザーの現在の公開IPアドレスをテキストやJSON形式で返します。

無料でアクセス可能であり、高い信頼性と無制限の利用が可能な点が特徴です。
APIは、単純なGETリクエストを通じて利用でき、特別な認証や複雑な設定は不要です。

利用方法は、以下の4タイプが存在しています。

 https://api.ipify.org
 https://api.ipify.org?format=json
 https://api.ipify.org?format=jsonp
 https://api.ipify.org?format=jsonp&callback=getip

希望するレスポンス形式に応じて選択することになります。

プレーンテキスト形式

URL: https://api.ipify.org

このURLにアクセスすると、ipifyはプレーンテキスト形式で現在の公開IPアドレスを返します。

JSON形式

URL: https://api.ipify.org?format=json

format=jsonパラメータを追加することで、レスポンスがJSON形式で返されます。
これにより、プログラムによる解析が容易になります。
上記のPythonコード上でもJSON形式を利用しています。

JSONP形式

URL: https://api.ipify.org?format=jsonp

format=jsonpパラメータを使用すると、レスポンスがJSONP形式で返されます。
これは、ウェブページ上でクロスドメインのHTTPリクエストを行う際に有用です。

JSONP形式(カスタムコールバック関数付き)

URL: https://api.ipify.org?format=jsonp&callback=getip

callbackパラメータに関数名を指定します。
レスポンスに含まれるJSONP形式のデータを処理するためのカスタムコールバック関数を指定できます。
これにより、レスポンスデータの取り扱いがさらに柔軟になります。

タイトルとURLをコピーしました