search
LoginSignup
3

More than 1 year has passed since last update.

posted at

updated at

Organization

YOUは何処から日本へ?(ページにアクセスしたユーザーがどこから来たか調べる)

アクセスしたユーザーの国や地域、IPアドレス取得

案件で多言語サイトのデフォルト言語をユーザーごとに出し分けたいという要望があったため
フロント、サーバー側で国や地域、IPアドレスを取得する方法を調査した

JavaScripts で対応

JS単体では端末のIPを取得することはできないがAPIを利用することで取得できる
以下は中でもフリーのサービスを抜粋したもの

1. ipinfo.io

 アクセスするとIPを取得して表示してくれるサービス。
 JSON形式で情報が返却される。
 アカウント作成とアクセス回数に上限がある
 ipinfo.io

2. Geolocation API

 WiFi、GPS、IPアドレスなどから位置情報を取得するAPI。
 JSON形式で情報が返却される。
 位置情報の取得にはユーザーの許可が必要なため拒否されれば当然取得できない。
 WiFiや緯度経度からの取得はGoogleが提供していることが多いため中国などでは利用できないことがある。
 Geolocation API

3. ipify

 フリーのIP取得サービス。
 JSON形式で情報が返却出来る。
 上限は無し。
 ipify
 API

4. jsonip.com

 無料無制限のIP取得サービス。
 JSON形式でIPを取得できるがおまけに広告とドキュメントのURLが含まれている。
 以前は政治的メッセージも含まれていたがなくなったらしい。
 上限なし。
 jsonip.com
 API

5. JSON Test

 フリーのIP等取得サービス。
 IPアドレス単体やリクエストヘッダー情報をJSON形式で取得できる。
 名前のせいで情報が見つけにくい。
 JSON Test
 API

6. ipapi.co

 フリーと商用ライセンスのあるIP等取得サービス。
 アカウント登録が必要。
 IPだけでなく国や地域、緯度経度など詳細なデータをJSON形式で取得できる。
 珍しくドキュメントもそろっているので親切。
 ipapi.co

PHP で対応

PHPはIPアドレスを取得できるが国や地域を取得するにはライブラリかAPIが必要になる(一部有料)

1. IPinfoAPI

 IPアドレスを渡すと国や地域のコードをJSON形式で取得できるサービス
 上限が毎秒2回まで。

2. Geo IP2

 MaxMind社から提供されたデータベースファイルをサーバー側に設置しアクセスしたIPで検索してどの国や地域からアクセスがあったかを調べる。
 無償版ライセンスでは国まで、有償版では地域まで取得できるので用途によって使い分け可能。
 Geo IP

AWS で対応

AWSのCloudFront-Viewer-Country はIPアドレスから判断したアクセス元の国コードを返却するためAWSを利用していれば対応可能。
 AWS

まとめ

  • JavaScriptsは単体ではIPを取得できないがAPIを使用すればIPもしくは国コードなどのアクセス元情報が取得できる。
    ただしIPアドレスの取得方法によっては対象外の国や地域があるため注意が必要。

  • PHPはIPアドレスは単体で取得可能だがアクセス元の国や地域のコードを取得するにはライブラリ、APIが必要。
    ライブラリのライセンスは詳細な情報が必要であれば有償版、国コードが必要なだけであれば無償版でよい。

  • その案件がAWSを利用しているのであればCloudFront-Viewer-Country で対応可能

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
What you can do with signing up
3