海外IPからのアクセスを検知して分岐処理を書く機会があったので、調査結果を備忘録がてらまとめてみました。
この方法を採用することで、特定の国や地域からのアクセスを識別することができます。
海外IPからのアクセスを再現する方法と、海外IPからのアクセスを検知する方法に分けてそれぞれ解説していきます。
海外IPからのアクセスを再現する方法
1. VPN Free – Betternet Unlimited VPN Proxy
再現方法は色々あったのですが、この拡張機能を使うやり方がお手軽かつページ遷移まで再現できるので圧倒的におすすめです。
拡張機能をインストールし下記画像の「CONNECT」ボタンを押せば海外IPからのアクセスを再現できます。
2. WebPageTest
登録不要で、簡単に海外IPからのアクセスを再現できるサイトです。
画像の「Enter a website URL…」と表示されているinputフォームに、アクセスしたいURLを入れて「Start Test」ボタンをクリックすれば海外IPからのアクセスを再現できます。
アクセスした結果の画面が表示されます。
海外IPからのアクセスを検知する方法
1. API
リクエスト元のIPアドレスを送ることで、どの国からのアクセスかを判定できるAPIが世界にはたくさんあるのでそれらを使いましょう。適当にいくつか紹介します。
有料なものもあるので使用する際は自己責任でお願いします
dbip
ipgeolocation
IPWHOIS.IO
2. MaxMind DB
MaxMind DBとは、MAXMIND社が提供しているIPアドレスから位置情報を検索するためのデータベースで、IPアドレスから、国や地域、市、郵便番号といった情報を取得することができます。
MaxMind DBは、オープンソースのGeoLite2というデータベースを提供する他、有料のデータベースも提供しています。
仕様についての詳しい説明は下記公式ドキュメントを参考にしてください。
また、実際に採用する場合は下記GitHubのREADMEを参考にしてください(Rubyで採用する場合のGitHubです)。
最後に
様々な外部サービスを使うことで海外IPアクセスの再現とその判定を簡単に行えることがわかりました。ただ、これから実際にどのサービスを使うか決めるって段階に入るとお金が絡んできて急に難しくなりますよね…
どのサービスが使えるか調査するのは楽しくても、実際に決める段階は嫌いって人意外と多そうです(偏見)。コストとサービスクオリティのバランスは悩まざるを得ないなって改めて感じました。