コンテンツにスキップ
ログイン サインアップ

IP Info(無料IPジオロケーションAPI)

IP Infoは、Shifterが運営する無料のIPジオロケーション・ASN APIです。1回のGETリクエストで、IPアドレスの国、地域、都市、座標、タイムゾーン、ISP、ASN、接続タイプをJSONとして返します。サインアップもAPIキーもサブスクリプションも不要です。

これはShifterが自社のプロキシプールに使用しているのと同じIPロケーション・ネットワークデータベース上で動作しています。そのため、IP InfoでShifterの出口IPを確認すると、当社のネットワークが認識している通りの位置情報を確認できます。

リクエスト返される内容
GET http://ip-info.com/jsonリクエストを行ったIP(サーバーのIP、またはプロキシ経由の場合はプロキシの出口IP)
GET http://ip-info.com/json?ip=8.8.8.8指定した公開IPv4またはIPv6アドレス
GET http://ip-info.com/8.8.8.8/json同じ検索のパス形式

HTTP(http://ip-info.com/json)も利用でき、リダイレクトはされません。混在コンテンツによるブロックを避けるため、Webページからは HTTPS を使用してください。レスポンスはクロスオリジンのGETを許可しているため、ブラウザ側のコードから直接APIを呼び出せます。

Terminal window
curl --max-time 10 "http://ip-info.com/json?ip=94.204.59.232"
{
"ip": "94.204.59.232",
"city": "Motor City",
"region": "Dubai",
"region_code": "DU",
"country": "AE",
"country_name": "United Arab Emirates",
"continent": "AS",
"loc": "25.0459,55.241",
"latitude": 25.0459,
"longitude": 55.241,
"postal": null,
"timezone": "Asia/Dubai",
"asn": 15802,
"as_name": "Emirates Integrated Telecommunications Company PJSC",
"isp": "Emirates Integrated Telecommunications Company PJSC",
"org": "Emirates Integrated Telecommunications Company",
"connection_type": "Corporate",
"user_type": "business",
"is_anycast": false
}

実際のレスポンスには29個のフィールドがあり、上の例はその中でも多くの連携で参照される項目を示しています。すべてのフィールドは常に存在し、データベースに値がない場合はnullが返されます。

Shifterプロキシの出口を確認する

Section titled “Shifterプロキシの出口を確認する”

引数なしのリクエストをプロキシ経由で送信します。IP Infoのレスポンスは出口IPの情報を返すため、狙った国、都市、ASNが実際に得られたものと一致しているかを確認できます。

Terminal window
curl --max-time 15 \
--proxy http://p.shifter.io:443 \
--proxy-user "customer-USERNAME-country-us-city-new_york:PASSWORD" \
http://ip-info.com/json

country(ISO 3166の2文字コード)をリクエストした国と比較し、asn(AS接頭辞のない数値のみ)を狙ったネットワークと比較してください。ユーザー名のフラグについてはジオターゲティングを参照してください。

IP Infoは認証フローを必要としないため、エージェントは他のHTTPエンドポイントと同様に呼び出すことができます。エージェントやツール開発者が直接読み込める、機械可読な説明も公開しています。

MCPサーバーは不要です。フレームワークが関数やツールの定義を受け付ける場合は、以下だけで十分です。

{
"name": "ip_lookup",
"description": "Approximate geolocation and network (ASN, ISP) for a public IP address. Omit ip to look up the agent's own network exit.",
"input_schema": {
"type": "object",
"properties": {
"ip": { "type": "string", "description": "Public IPv4 or IPv6 literal. Leave empty for the caller's exit IP." }
}
}
}

ipが空の場合はGET http://ip-info.com/jsonとして、それ以外の場合はGET http://ip-info.com/json?ip=<URL-encoded ip>として実装してください。

このツールと合わせて、エージェントには次のルールを伝えてください。

  1. ipを指定しない呼び出しは、エージェント自身のサーバーまたはプロキシの出口を示すものであり、人間のユーザーを示すものではありません。ユーザーのIPを調べるには、そのIPを明示的にエージェントへ渡す必要があります。
  2. 国の比較にはcountryを、ネットワークの確認にはasnを使用してください。
  3. nullは不明として扱ってください。欠落しているフィールドを推測で埋めてはいけません。
  4. 位置情報は近似値であり、IP InfoはVPNやプロキシの検出サービスではありません。

エージェントの典型的な用途としては、ブラウジングエージェントのプロキシが正しい国にあることをローカライズされたページをスクレイピングする前に確認すること、取得したデータに取得元の出口位置をタグ付けすること、ログやサインアップ時のIPに国とASNの情報を付加することが挙げられます。

エラーは安定したコードとともにJSONで返されます。

{ "error": { "code": "invalid_ip", "message": "Supply a literal IPv4 or IPv6 address." } }
ステータスコード意味
400invalid_ip入力が不正、プライベート、予約済み、またはその他非公開のIPである、あるいはパラメータが矛盾している
404ip_not_foundこのIPのレコードがアクティブなデータベースに存在しない
405method_not_allowedGETを使用してください
503database_unavailable一時的な問題です。バックオフしてリトライしてください
504timeout一時的な問題です。バックオフしてリトライしてください

4xxの入力エラーはリトライする前に修正してください。503、504および接続エラーの場合は、短い上限付きのバックオフ(例えば1秒、2秒、4秒)でリトライし、それでも失敗する場合はあきらめて失敗を報告してください。

  • 無料、クォータなし。 キー単位・アプリ単位のクォータはなく、APIキーも不要です。これは容量に限りのある共有サービスであるため、アプリケーションに必要な分だけリクエストを行い、利用規約に従ってください。自動化された用途、商用利用も認められています。
  • 設計上、近似値です。 座標は一定のエリアを示すものであり、住所を特定するものでも、個人を特定するものでもありません。
  • プロキシやVPNの検出器ではありません。 connection_type、user_type、is_anycastはデータベース上の分類であり、IPの実際の使われ方を証明するものではありません。
  • プライバシー。 このAPIは検索履歴を一切保持しません。詳細はプライバシーポリシーを参照してください。

ご質問やデータの不一致については、該当のIPと想定される位置情報を添えてhi@shifter.ioまでメールでお問い合わせください。