htsign's blog

ノンジャンルで書くつもりだけど技術系が多いんじゃないかと思います

グローバルIPアドレスを得る

今まではipifyを使っていました。

> Invoke-WebRequest api.ipify.org | Write-Host
125.203.***.***

非常にシンプルで使用制限もなく応答速度も問題なくて重宝していました。


これで終わりでいいんですが、みんな大好きStackOverflowのとあるスレッドで有用なやり取りがあったので。
Getting my public IP via API - Stack Overflow

どうやらipinfo.ioというのがあるようで、「1日1000リクエストまで」という制限があるようですが*1柔軟性が高いです。
オプションを何もつけなければJSONでデータが返ってきます。

> Invoke-WebRequest ipinfo.io | Write-Host
{
  "ip": "125.203.***.***",
  "hostname": "i125-203-(中略).ap.plala.or.jp",
  "city": "",
  "region": "",
  "country": "JP",
  "loc": "35.***,139.***",
  "org": "AS4713 NTT Communications Corporation"
}

まぁ使い方は公式サイトにでかでかと書かれてるのでわざわざここで説明するまでもないんですが、JSONのプロパティがオプション名になってます。

> Invoke-WebRequest ipinfo.io/ip | Write-Host
125.203.***.***

> Invoke-WebRequest ipinfo.io/country | Write-Host
JP


特に凝ったことするのでなければipify, ちょっと別の情報も使いたいってときはipinfo.ioって具合に使い分けましょうかね。

*1:無料プランでの話なので、有料プランを選べばもちろん制限は緩くなります。