curlやAPIで自分のIPをどう調べますか?
ターミナルでcurl ipnow.krを実行すると、現在の接続の公開IPが1行ですぐに出力され、curl ipnow.kr/jsonを使うと位置情報・通信事業者・User-Agentなどの詳細情報がJSON形式で返ってきます。Windows PowerShellでも同じように手軽に調べられます。
最終更新日
curlでIPを1行だけ確認する
ターミナルでcurl ipnow.krを実行すると、HTML画面の代わりに現在の公開IPだけが1行で出力されます。curl ipnow.kr/ipも同じようにIP1行だけを返します。
どちらのパスもスクリプト内で変数にそのまま保存しやすいよう設計されており、サーバーの状態確認スクリプトやリモートサーバーの公開IP確認によく使われます。
JSON APIで詳細情報を取得する
curl -s ipnow.kr/jsonを実行するとJSON形式のレスポンスが得られます。jqがインストールされていればcurl -s ipnow.kr/json | jqで見やすく整形できます。
JSONにはip、ip_version、country_code、country、region、city、latitude、longitude、asn、isp、as_org、user_agent、browser、browser_version、os、device、is_bot、is_ai、bot_name、accept_language、protocol、timeといったフィールドが含まれています。
IPv4・IPv6をそれぞれ強制的に調べるには?
curl -4 ipnow.krを使うとIPv4だけで接続してIPv4の公開アドレスを確認でき、curl -6 ipnow.krを使うとIPv6だけで接続してIPv6アドレスを確認できます。両方の結果が異なる場合、その端末やサーバーはIPv4とIPv6を同時に使うデュアルスタック環境ということです。
Windows PowerShellで調べる
PowerShellでは(Invoke-WebRequest ipnow.kr/ip).ContentでIP文字列だけを取得でき、irm ipnow.kr/json(Invoke-RestMethodのエイリアス)を使うとJSONレスポンスをそのままオブジェクトとして受け取り、フィールドごとに扱えます。
スクリプトで自動的にIPを取得するには?
bashスクリプトならMYIP=$(curl -s ipnow.kr/ip)のように変数に保存し、デプロイスクリプトやファイアウォールルールにそのまま活用できます。
JavaScriptではfetch("https://ipnow.kr/json").then(r => r.json()).then(data => console.log(data.ip))のようにfetchで呼び出せ、CORSがすべてのオリジンに許可されているためブラウザから直接呼び出してもブロックされません。
curlやAPIで自分のIPをどう調べますか?:手順
- IPだけ確認ターミナルで
curl ipnow.krまたはcurl ipnow.kr/ipを実行し、公開IPを直接出力します。 - JSONで詳細取得
curl -s ipnow.kr/jsonを実行し、必要なら| jqで見やすく整形します。 - IPv4/IPv6を強制指定
curl -4 ipnow.krまたはcurl -6 ipnow.krで調べたいアドレス形式だけを確認します。 - PowerShellで調べる
(Invoke-WebRequest ipnow.kr/ip).Contentまたはirm ipnow.kr/jsonを実行します。 - スクリプトに組み込むbashでは
$(curl -s ipnow.kr/ip)で変数に保存し、JavaScriptではfetchで/jsonを呼び出して必要なフィールドを取り出します。
よくある質問
ブラウザからfetchで呼び出すとCORSエラーになりませんか?
ipnow.krのAPIはすべてのオリジンに対してCORSを許可(Access-Control-Allow-Origin: *)しているため、専用サーバーなしでブラウザのJavaScriptから直接呼び出せます。
APIを使うのに認証キーは必要ですか?
不要です。会員登録やAPIキーなしで、誰でも無料でcurlやfetchからすぐに呼び出せます。
curl ipnow.krとcurl ipnow.kr/jsonは何が違いますか?
curl ipnow.krとcurl ipnow.kr/ipはIPアドレス1行だけを返し、curl ipnow.kr/jsonは位置情報・通信事業者・User-AgentなどをJSON形式で返します。
なぜJSONにUser-Agentのフィールドも含まれているのですか?
リクエストを送ったクライアント(curl、ブラウザなど)のUser-Agentも一緒に記録することで、どんな環境から調べたのかがわかるようにしています。User-Agent自体についてはUser-Agentとはを参考にしてください。