リクエスト元の API の IP

Linda Hamilton
リリース: 2024-12-21 17:07:10
オリジナル
133 人が閲覧しました

IP of Requesting API

Express.js でクライアントの IP アドレスを取得する

人気のある Node.js フレームワークである Express.js は、Web アプリケーションの構築プロセスを簡素化します。 Express アプリケーション内でクライアントの IP アドレスを取得するには、フレームワークによって提供される req.ip プロパティにアクセスします。ただし、アプリケーションがプロキシまたはロード バランサーの背後にあるシナリオでは、クライアントの IP が X-Forwarded-For ヘッダーに格納される可能性があります。このような場合にクライアントの IP を正確に取得するには、次のアプローチを検討してください:

const express = require('express');
const app = express();

app.use((req, res, next) => {
  const clientIp = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
  console.log(`Client IP: ${clientIp}`);
  next();
});

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});
ログイン後にコピー

この設定では、ミドルウェア関数は、X-Forwarded-For ヘッダーが存在する場合は、そこからクライアントの IP アドレスを取得します。それ以外の場合は、req.connection.remoteAddress に戻ります。これにより、アプリケーションのデプロイメント環境に関係なく、正しい IP アドレスを確実に取得できます。

IPQuery による IP データの拡張

クライアントの IP アドレスを取得したら、このデータを地理位置情報とリスク評価情報で強化することで、貴重な洞察を得ることができます。 IPQuery は開発者向けに設計された堅牢な API で、VPN 検出、位置情報、脅威インテリジェンスなどの機能を提供します。 IPv4 と IPv6 の両方をサポートする IPQuery は、低遅延で高速なルックアップを実現するため、リアルタイム アプリケーションに最適です。

Express アプリケーションでの IPQuery のセットアップ

IPQuery を Express アプリケーションに統合するには、次の手順に従います。

  1. Axios HTTP クライアントをインストールします

Axios は、HTTP リクエストを容易にする Node.js 用の Promise ベースの HTTP クライアントです。 npm:
を使用してインストールします。

   npm install axios
ログイン後にコピー
  1. IPQuery をクエリする関数を作成する

IPQuery API にリクエストを送信し、レスポンスを処理する関数を開発します。

   const axios = require('axios');

   async function getIpInfo(ip) {
     try {
       const response = await axios.get(`https://api.ipquery.io/${ip}?format=json`);
       return response.data;
     } catch (error) {
       console.error(`Error fetching IP information: ${error}`);
       return null;
     }
   }
ログイン後にコピー
  1. IPQuery をミドルウェアに統合する

getIpInfo 関数を利用するように Express ミドルウェアを変更します。

   app.use(async (req, res, next) => {
     const clientIp = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
     const ipInfo = await getIpInfo(clientIp);
     if (ipInfo) {
       console.log(`Client IP: ${clientIp}`);
       console.log(`Location: ${ipInfo.location.city}, ${ipInfo.location.country}`);
       console.log(`ISP: ${ipInfo.isp.org}`);
       console.log(`Risk Score: ${ipInfo.risk.risk_score}`);
     }
     next();
   });
ログイン後にコピー

このミドルウェアは、クライアントの IP アドレスを取得し、IPQuery から詳細情報を取得し、場所、ISP、リスク スコアなどの関連詳細をログに記録します。

IPQuery の応答構造を理解する

IPQuery は、さまざまなデータ ポイントを含む包括的な JSON 応答を提供します。

{
  "ip": "1.1.1.1",
  "isp": {
    "asn": "AS13335",
    "org": "Cloudflare, Inc.",
    "isp": "Cloudflare, Inc."
  },
  "location": {
    "country": "Australia",
    "country_code": "AU",
    "city": "Sydney",
    "state": "New South Wales",
    "zipcode": "1001",
    "latitude": -33.854548400186665,
    "longitude": 151.20016200912815,
    "timezone": "Australia/Sydney",
    "localtime": "2024-09-03T22:22:52"
  },
  "risk": {
    "is_mobile": false,
    "is_vpn": false,
    "is_tor": false,
    "is_proxy": false,
    "is_datacenter": true,
    "risk_score": 0
  }
}
ログイン後にコピー

主要なコンポーネントには次のものが含まれます:

  • IP: クエリされた IP アドレス。
  • ISP: ASN、組織、ISP 名など、インターネット サービス プロバイダーに関する情報。
  • 場所: 国、都市、州、座標などの地理データ。
  • リスク: IP がモバイル ネットワーク、VPN、Tor ノード、プロキシ、データ センターに関連付けられているかどうか、全体的なリスク スコアなど、潜在的なリスクの指標。

詳細については、IPQuery のドキュメントを参照してください。

以上がリクエスト元の API の IPの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート