現在のIPを取得
GET /api/ip
サーバーに到達したアドレス、IPバージョン、プロトコル、HTTPSの状態を返します。?enrich=1 を追加すると、おおよそのネットワーク情報を取得できます。
curl "/api/ip" 開発者向けプレビュー
現在の訪問者の接続情報と簡易診断を提供する小さなJSONエンドポイントです。
GET /api/ip
サーバーに到達したアドレス、IPバージョン、プロトコル、HTTPSの状態を返します。?enrich=1 を追加すると、おおよそのネットワーク情報を取得できます。
curl "/api/ip" GET /api/ip-lookup?ip=8.8.8.8
公開IPv4またはIPv6アドレスのみを受け付けます。入力を検証し、呼び出し元ごとに1分あたり30リクエストに制限します。
GET /api/network-risk
キャッシュされたネットワーク情報と、VPN、プロキシ、ホスティングに関する慎重な推定を返します。結果には信頼度が含まれますが、証拠として扱わないでください。
GET /api/health はデータベースとストレージを確認します。GET /api/ping は遅延とジッターのサンプル測定に使用します。
GET /api/speed?bytes=N は正確なContent-Length付きのバイナリデータ(application/octet-stream)を返します。数値は整数に変換し、64 KB~8 MB(65,536~8,388,608バイト)の範囲に制限します。値がない場合や数値でない場合は262,144バイトになります。直近10分間の移動時間枠で60リクエストまでです。高速な接続での一連のテストでは、ダウンロードサンプルを最大3回取得する場合があります。
POST /api/speed-upload はapplication/octet-streamのみを受け付け、上限は4 MB(4,194,304バイト)です。一定量ずつ読み取り、JSON {"ok":true,"bytes":N} を返します。直近10分間の移動時間枠で10リクエストまでです。ダウンロードとアップロードには、呼び出し元のIPから生成した別々のHMACキーを使用します。
メソッドが違う場合はHTTP 405、アップロードのコンテンツタイプが非対応の場合は415、アップロードが大きすぎる場合は413、制限超過の場合は429を返します。応答には Cache-Control: private, no-store, max-age=0 と X-Content-Type-Options: nosniff を設定します。
利用者が開始した1回の適応型テストでは、ヘッダーとping応答を除き、最大約15.25 MiBを転送します。結果はIP Lensサーバーまでの経路を測るもので、ISPの広告速度を下回る場合があり、契約回線速度を認証するものではありません。転送データは一時的に処理し、データや結果をデータベース、アクセス解析、キャッシュ、アプリケーション管理のログに保存しません。悪用防止のため、有効期限付きのHMACリクエスト制限記録のみを保存します。
GET /api/stats/summary?days=30
config.phpに設定した管理者ユーザー名とパスワードでHTTP Basic Authを使用します。結果には総閲覧数、人間の訪問者日数、閲覧ページ数、ボットの閲覧数と割合、ボットの系統・分類、日別およびURL別の人間・ボット統計が含まれます。国、ブラウザー、OS、端末、言語、参照元の上位集計は人間のアクセスのみを対象とします。最近のアクティビティは、マスクされた訪問者・端末情報または正規化されたボット識別情報に限定され、閲覧ページのパス、完全なIP、完全なUser-Agent、訪問者キーは含みません。
GET /api/weather?lang=ja
サーバー側でWeatherAPI.comを有効にして設定済みの場合に、IPから推定したおおよその位置の現在の天気を返します。
fetch('/api/ip-lookup?ip=8.8.8.8')
.then(function (response) { return response.json(); })
.then(function (data) { console.log(data.ip, data.network); });