首页 >web前端 >js教程 >请求API的IP

请求API的IP

Linda Hamilton
Linda Hamilton原创
2024-12-21 17:07:10125浏览

IP of Requesting API

在 Express.js 中检索客户端的 IP 地址

Express.js 是一个流行的 Node.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 检测、地理定位和威胁情报等功能。 IPQuery 同时支持 IPv4 和 IPv6,可提供低延迟的快速查找,使其成为实时应用程序的绝佳选择。

在 Express 应用程序中设置 IPQuery

要将 IPQuery 集成到您的 Express 应用程序中,请按照以下步骤操作:

  1. 安装 Axios HTTP 客户端

Axios 是 Node.js 的基于 Promise 的 HTTP 客户端,可促进 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 集成到您的中间件

修改 Express 中间件以利用 getIpInfo 函数:

   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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn