IP Address Geolocation RESTful APIs

IPアドレスの地理的位置情報が引ける無料RESTful API集

IP アドレスからサーバーの地理的位置情報(Geolocation)を調べてくれるオンライン・サービスは、ちょっと検索すればすぐに見つかりますし、有料のサービスも山ほどあります。が、サーバーから任意の IP アドレスが引ける無料のサービスとなると、ちょっと時間をかけて検索しなければなりません。

今回は、海外からのコメント・スパムをブロックする WordPress プラグインを作りたくて、タイトルの様なサービスを調べてみました。

IP Geolocation の歴史も調べてみましたので、雑学系としてもご覧ください。

IP Geolocation の歴史

IP アドレスから ISP の位置情報を推定する技術は、1990年後半から研究されていました。DARPA がメインスポンサーの非営利団体 CAIDA(インターネット・インフラの発展のために、産学官が管理面・技術面で協力し合う非営利団体)が NetGeo というツールを開発し、データベースを公開しています。このデータベースは1999年に更新を止めていますが、その後、様々な商用データベースの元になったと言っていいでしょう。

原理そのものは単純で、位置が既知の複数のサーバー(Vantage Point)からターゲットに ping を送り、その RTT から推定される距離の同心円の重なったところにターゲットがあるとするものです。

IP Geolocation の原理

IP Geolocation の原理 / 出典:Towards Street-Level Client-Independent IP Geolocation

この領域の最近の研究動向は、ネットワークをトポロジー的に見た場合に、如何にスケーラブルに(例えばルート・サーバーから末端の ISP やユーザー・エージェントまで)、精度よく短時間で測位できるかのようです。

例えば上記出典によると、その位置誤差は(研究上のチャンピオンデータでしょうが)690m 程度で、基準サーバー(Vantage Point)がターゲットに近いほど精度が良くなると言われています。

脱線ついでに html5 の W3C Geolocation API について言えば、基本的には上記原理のターゲットをブラウザに拡張し(ユーザーが許可した場合だけ)、A-GPS サーバー や WiFi 基地局を Vantage Point や位置の補正情報として使っているのだと思われます。そしてその精度は 50m 程度 とのことです。

またかつて Google Gears で、Geolocation API をサポートしていないブラウザ向けの位置情報サービスが提供されていましたが、現在は「役割を終えた」ということで、同サービスは終了 しています。

無料の IP Geolocation データベース

なかなか API にいかなくてゴメンナサイ。まずは IP アドレスとその位置情報を紐付けた、無料で利用できるデータベースを紹介します。

IP アドレスの位置情報は、犯罪捜査はもちろん、エリアターゲッティングとしてコンテンツの最適化に利用されています。幾つかの企業がこういった商用のデータベースを整備しており、その精度を落としたものを無料で公開しています。

どのデータベースもダウンロードするには、メールや利用するサイトなどの登録が必要です。実際に利用するには、各社の Terms of Use をご確認ください。

MaxMind

MaxMind

MaxMind

データベースをオープンソース(CC BY-SA 3.0、つまり MaxMind へのクレジット・リンクを明示すれば、商用利用や再配布が可能)として公開しています。 そのため本記事で紹介する多くの API が MaxMind を使っています。データベース自体も毎月更新されてます。

ちょっと前まで レガシー版 JavaScript が無料で使えていましたが、このサービスは廃止の方向のようで、現在では GeoIP2 というサービス群にバージョンアップしており、またそれらを利用するためのドキュメントも充実しています。

バージョン データベース API 用モジュール
GeoIP2 GeoLite2
GeoIP Legacy GeoLite

また PHP ドキュメントには「その他の基本モジュール」として PECL 版Geo IP ロケーション が載っていますし、pear 版 Net_GeoIPGitHub)ってのもあります。

参考情報

IP2Location

IP2Location

IP2Location

マレーシア企業 が公開する IP2Location LITE は、クレジット・リンクの表示 により、個人あるいは商用で利用することができます。

データベースは、IP アドレスと国コードだけのものから、都市や緯度・経度が入ったものまで、目的とデータ量に合わせて用意されているのが特徴です。

また 開発者向けのページ には、PHP、Perl、Ruby、Python、node.js など、各種言語用モジュールが用意されています。

参考情報
  • IP2Location Tags
    • IP2Location 自身がリリースしている WordPress ブラグインで、サーバーにバイナリーのデータベースをおいた上で、訪問者の位置情報でコンテンツを切り替えたりすることができるようになります。
  • IP2Location Country Blocker
    • 上と同じく IP2Location 自身がリリースしている WordPress ブラグインです。指定国の訪問者を弾くことができます。
  • IP2Location Variables
    • 上と同じく IP2Location 自身がリリースしている、PHP 関数を提供してくれる WordPress ブラグインです。
  • IP2Location
    • かつては日本のアドレスを登録するプロジェクトがあったのでしょうか。2006年から更新が止まっています。
  • PECL :: Package :: ip2location
    • IP2Location の PECL 版パッケージです。
2013年12月30日 追記

上記 IP2Location Variables を試してみましたが、IPv6 はサポートしておらず、Invalid IPv4 address. が返ってきます。アドレス空間が膨大なので無理からぬことですが、IPv6 が増えていくであろう日本では、ちょっと使い勝手が悪いかもしれませんネ。

IPligence

IPligence

IPligence

IPligence Lite Free が非商用利用に限り利用できます。ただし無料で利用できるのは国コードが入ったデータベースだけで、緯度・経度などは得られません。その一方で、網羅されている IP アドレスのレコード数が他より 30% ほど多めです。

MySQL から利用するための ドキュメント がちょっと簡素なため、上級者向きと言えるでしょう。

DB-IP

DB-IP

DB-IP

国コードだけ、あるいは国コード+都市名のデータベースが ダウンロード できます。

提供フォーマットが CSV なため、加工が容易な分、ファイルサイズが大きくなっています。

また後述しますが、RESTful な API が利用できるのも特徴でしょう。

RESTful API 集

各サイトの利用条件(Terms and Use)には一通り目を通していますが、ご利用は自己責任でお願いします。

また表中の「応答時間」は、20個の IP アドレスを1秒間隔でリクエストした時の平均値で、自宅(au 光、実効値 20MBPS程度)で測った参考値です。目安として見てください。

IPInfoDB

サイト http://ipinfodb.com/
利用条件 無料(要登録)
アクセス限度 1秒間に2リクエスト
データベース IP2Location
入力データ IPアドレス(IPv4, IPv6)、ドメイン名
出力データ json, jsonp, raw, xml
応答時間 468 [msec]
API サンプル

IP2Location のデータベースを使った、マレーシアのソフトベンダーが提供するサービスです。

メールアドレスを登録し API キーを発行してもらえばだれでも無料で利用可能で、私もお試しで取得し、「 IPアドレスから所在地を調べるjQueryプラグイン」として公開しています。

API のドキュメント には、各種プログラミング言語用コードや、アクセス限度を超えないよう結果を cookie に保存する方法など、豊富なサンプルが提供されています。

データベースの更新は1か月に1度とのことです。また IPv6 もサポートされていますが、実際試してみると、かなり限定的です。

参考情報
  • enginkizil/jqIpLocation
    • 作者が取得した API キーが埋め込まれた jQuery プラグインです。
  • My Geo Posts Free
    • 同じくショートコードで情報を埋め込める WordPress 用プラグインです。レビューには★1つの書き込みもありますが、解決されたようです。

freegeoip.net

サイト http://freegeoip.net/
利用条件 商用・非商用の区別なく無料(寄付可)
アクセス限度 1時間当たり1万リクエスト
データベース MaxMind
入力データ Pアドレス(IPv4)、ドメイン名
出力データ csv, json, jsonp, xml
応答時間 487 [msec]
API サンプル

Alexandre Fiori さんが運用する、無料かつ登録不要で利用できるサービスです。データベースは MaxMind の GeoLite を主に、他のデータソースをアレンジして構築しています。ブログ からは、サーバーの能力アップに精力を注いでいる様子が伺え、実際、応答速度も速いのですが、現在のところ IPv6 が引けないのが痛いところです。

geoPlugin

サイト http://www.geoplugin.com/
利用条件 無料(要クレジット・リンク、寄付可)
アクセス限度 1分間に120リクエストまで
データベース MaxMind
入力データ IPアドレス(IPv4, IPv6)
出力データ ASP, JavaScript, json, jsonp, php, xml
応答時間 944 [msec]
API サンプル

ドキュメントがしっかりしていています。豊富な出力フォーマットと、緯度・経度から都市を逆引きする ジオデコード近隣都市の検索 など、多様なサービスが売りでしょう。SSL での利用やアクセス限度を外す有料プランもあります。

Telize

サイト http://www.telize.com/
利用条件 無料
アクセス限度 制限なし
データベース MaxMind
入力データ IPアドレス(IPv4, IPv6)
出力データ json, jsonp
応答時間 896 [msec]
API サンプル

ネットワーク関連にめっぽう強そうな Frederic Cambus さん運営の、IPv6 がサポートされているのが嬉しいサービスです。ドキュメントには jQuery を使った例など、豊富なサンプルが記載されているので、使い易い API だと思います。

Smart-IP.net

サイト http://smart-ip.net/
利用条件 無料
アクセス限度 1日当たり5000クエリ
データベース
入力データ IP アドレス(IPv4, IPv6)、ドメイン名
出力データ json, xml
応答時間 895 [msec]
API サンプル

IP アドレス関連をビジネスのタネにしているサイトのようです。無料利用できるという記述がなかなか見つかりませんでしたが、FAQ にありました(汗;)。データベースの更新日付や日々のアクセス量などが掲載されていて、安心感があります。

IP アドレスがスパム・サイトとして登録されているかチェックしてくれる IP Blacklist Check などのサービスもあります。

IP-API.com

サイト http://ip-api.com/
利用条件 非商用なら無料
アクセス限度 1分当たり240リクエスト
データベース MaxMind
入力データ IPアドレス(IPv4, IPv6)
出力データ csv, json, jsonp, php, text, xml
応答時間 1033 [msec]
API サンプル

サーバーの応答はちょっと遅めですが、IPv6 のサポートと豊富な出力フォーマットが特徴のサービスです。ドキュメント も割としっかりしています。

ipinfo.io

サイト http://ipinfo.io/
利用条件 無料
アクセス限度
データベース
入力データ IPアドレス(IPv4)
出力データ json, jsonp
応答時間 896 [msec]
API サンプル

ドメインが US で登録されているということ以外、運営母体もデータ・ソースも不明ですが、有料のサービスも提供されているようです。

Xhanch

サイト http://xhanch.com/
利用条件 無料(寄付可)
アクセス限度
データベース
入力データ IPアドレス(IPv4)
出力データ json, xml
応答時間 753 [msec]
API サンプル

Web 開発を生業としているベンダーさんが無料で提供しているサービスです。

IP-Json

サイト http://ip-json.rhcloud.com/
利用条件 無料
アクセス限度
データベース
入力データ IPアドレス(IPv4、IPv6)、ドメイン名
出力データ csv, json, xml
応答時間 676 [msec]
API サンプル

OpenShift という PaaS 上に構築されたアプリで、応答は早い方です。ドキュメント に IPv6 のことは載っていませんが、専用のページ から API を知ることができます。

IP to Latitude, Longitude

サイト http://www.iptolatlng.com/
利用条件 無料
アクセス限度
データベース
入力データ IPアドレス(IPv4, IPv6)、ドメイン名
出力データ json, jsonp
応答時間 1008 [msec]
API サンプル

個人運営のようですが、詳細は不明です。

mshd.net

サイト http://mshd.net/
利用条件
アクセス限度
データベース
入力データ IP アドレス(IPv4, IPv6)
出力データ json, php, text
応答時間 1336 [msec]
API サンプル

運営者の Martin Schibel さんは、学生さんでしょうか。データ・ソースは不明ですが、出力される情報はかなり細かく、domainnetspeed なんて言うのもありますが、当てになるかどうか…

http://db-ip.com/

サイト http://db-ip.com/
利用条件 無料
アクセス制限 なし
データベース オリジナル
入力データ IP アドレス(IPv4, IPv6)
出力データ json, xml
応答時間 [msec]
API サンプル

登録と API キーの取得が必要です。私も取得してみましたが、調べられるのは国・都市名です。緯度・経度が必要なければ使えるでしょう。

hostip.info

サイト http://www.hostip.info/
利用条件 無料(要クレジット・リンク)
アクセス制限 なし
データベース オリジナル
入力データ IP アドレス(IPv4)
出力データ json, xml
応答時間 [msec]
API サンプル

オープンプロジェクトから始まった、コミュニティ参加型のデータベース&サービスです。データベースの網羅性や信頼性はコミュニティ活動に依存しますが、歴史が古く、現在もアドレスの追加が日々行われています(データベースの更新自体は月1回)。

また i アプリによる位置情報の収集も行っているようです(アプリとしては役に立ちそうもありませんネ)。

ただし日本の IP アドレス登録状況は、今イチです。

参考情報

どこどこ.js

日本の位置情報に特化した IP アドレス位置情報サービスで、都道府県市区町村や組織・業種など、かなり詳細な情報が得れます。無料利用できるのは個人かつ非商用に限りられます(利用条件アリ)が、REST 版 だけでなく JavaScript 版 が提供されているのが特徴でしょう。

現在は IPv4 のみのサポート のようです。

参考情報

最後に

まだいくつかあるんですが、数より質ってことで。

この手の無料サービスは、いつ止まるか分かりませんし、単位時間当たりのアクセス量が制限されていたりするので、複数を準備しておくのが肝要かと思います。

さてさて WordPress プラグインの件ですが、今回調べた API を組み込んで現在運用中です。それで近々告知しようと思っていたんですが、本家から サイト自体へのアクセスを禁止するプラグイン がリリースされたので、萎えちゃいました(笑) → IPv6 がダメってことが分かったので、まだ価値はあるかもデス。GitHub には上げてあるので、興味があれば見てやってください 😉 。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

海外からの投稿は受け付けていません