Express.jsによるIPジオロケーション検索
Express.jsを使用してウェブサイト(または API)を構築している場合、訪問者がどこから来たのかを知ると役立つことがよくあります。ウェブユーザーの位置を特定するプロセスは通常、IPジオロケーションと呼ばれます。残念ながら、これは単純なプロセスではありません。
IPジオロケーションデータを入手するのが簡単でない理由は、IPと位置情報の標準的な対応付けが存在しないからです。ほとんどの企業は、IPジオロケーションデータの正確なデータベースを構築する目的で、さまざまな情報を組み合わせるIPジオロケーションアグリゲータからデータを購入します。
IPジオロケーションデータは通常、以下の情報で構成されます。
- WHOISデータ
- 地域インターネットレジストリ
- 大手ISPからのBGP フィード
- 手動で収集されたレイテンシー情報
IPジオロケーションアグリゲーターを通さずにIPジオロケーションデータを取得することは、基本的に不可能です。
ここでは、筆者が作成した非常にシンプルなexpress-simple-geoip開発者ライブラリを使用し、Express.jsでIP Geolocation検索を簡単に実行してパフォーマンスを向上させる方法を説明します。
IP Geolocation API Lookupのアカウントを作成する
express-simple-geoipライブラリを使用するには、まず無料のIP Geolocation API アカウントを作成する必要があります:https://ip-geolocation.whoisxmlapi.com/signup 。
IP Geolocation API は、IPジオロケーション業界最大規模・最低コストを誇るAPIの一つです。毎月最大1,000クエリまで無料で実行できます。または、100,000クエリに対して月額27 ドルの定額料金プランもご用意しています。追加料金プランはこちらでご利用いただけます。
IP Geolocation API アカウントを作成してログインしたら、アカウントの商品ページを表示してAPIキーをコピーする必要があります。これは後でIP Geolocation検索をする際に必要となります。
express-simple-geoip Packageをインストールする
アカウントが設定されましたので、次にexpress-simple-geoip NPMライブラリをインストールします。コマンドラインから以下のコマンドを実行します。
$ npm install express-simple-geoip
これにより、NPMからexpress-simple-geoipパッケージの最新リリースがダウンロードされ、インストールされます。
express-simple-geoipを使用してIP Geolocation Lookupを実行する
アカウントとexpress-simple-geoipパッケージの両方がインストールされましたので、IPアドレスの物理的な位置の検索をするために実行できるコードを見てみましょう。
以下は、単純なhello world応答を返す1つのエンドポイント「/test」のみを含む単純な Express.jsアプリです。
"use strict";
const express = require("express");
const IpGeolocation = require("express-simple-geoip");
let app = express();
app.use(IpGeolocation("<your-api-key-here>"));
app.get("/test", (req, res) => {
res.json({ hello: "world" });
});
app.listen(3000);
このコードを「server.js」ファイルに入れて実行すると、ブラウザで「/test」エンドポイントにアクセスしたときに hello world応答が表示されます。
「app.use」行は IpGeolocationミドルウェアを初期化します。新しいリクエストがExpress.jsサーバーに届くたびに、IP Geolocation検索が実行され、新しい「req.geoip」オブジェクトがリクエストに追加されます。
以下のように「req.geoip」オブジェクトを参照すれば、コードでIP Geolocationデータにアクセスできます。
"use strict";
const express = require("express");
const IpGeolocation = require("express-simple-geoip");
let app = express();
app.use(IpGeolocation("<your-api-key-here>"));
app.get("/test", (req, res) => {
res.json({ hello: "world", geoip: req.geoip });
});
app.listen(3000);
この新しいサーバーを実行し、ブラウザで「/test」 URL にアクセスすると、以下のような新しい応答が表示されます。
{
"hello": "world",
"geoip": {
"country": "US",
"region": "California",
"city": "Mountain View",
"lat": 37.40599,
"lng": -122.078514,
"postalCode": "94043",
"timezone": "-08:00"
}
}
「req.geoip」データオブジェクトには、IP Geolocationデータリクエスターの全データが含まれています。「req.geoip」オブジェクトには、リクエスターの物理的な位置について知る必要がある全ての情報が含まれています。
IPジオロケーションデータの使い方
Express.js アプリを使用してIP Geolocationを簡単に検索できることがわかりました。以下に貴社のプロジェクトやサービスでの活用法をいくつかご紹介します。
- ユーザーが Web サイトにアクセスしたときにユーザーの国を検出し、ユーザーの場所 (言語、広告、デザイン、通貨など) に基づいてカスタマイズされたエクスペリエンスを提供します。
- 特定の場所からウェブサイトにアクセスするユーザーをブロックします。例えば、動画ストリーミングプロバイダーで、特定の国でのみ動画をストリーミングする権利を持っている場合、IP Geolocation検索によってそのデータを取得し、合法的に運営できる地域の顧客にのみサービスを提供することができます。
- 不正行為のリスクを軽減します。特定の場所からの大量の不正行為に気づいた場合、その場所からの訪問者を一時的にブロックすることが、不正行為やその他の問題をすみやかに軽減する方法となります。
express-simple-geoipを使用する:まとめ
IP Geolocation検索の実行は難しいかもしれませんが、express-simple-geoipをIP Geolocationサービスと合わせて使うことにより、手軽に低コストでできます。新しい express-simple-geoipライブラリを使用すれば、最大規模のエンタープライズサイトでもIP Geolocation検索を簡単に構築・管理できます。
詳細につきましては、GitHubのexpress-simple-geoipライブラリをチェックしてください。全てのドキュメントと詳しい情報をご確認いただけます:https://github.com/whois-api-llc/express-simple-geoip
ご質問がございましたら、こちらにメールでお問い合わせください。