Maison >interface Web >js tutoriel >IP de l'API requérante
Récupération de l'adresse IP du client dans Express.js
Express.js, un framework Node.js populaire, simplifie le processus de création d'applications Web. Pour obtenir l'adresse IP du client au sein d'une application Express, vous pouvez accéder à la propriété req.ip fournie par le framework. Toutefois, dans les scénarios où votre application se trouve derrière un proxy ou un équilibreur de charge, l'adresse IP du client peut être stockée dans l'en-tête X-Forwarded-For. Pour récupérer avec précision l'adresse IP du client dans de tels cas, envisagez l'approche suivante :
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'); });
Dans cette configuration, la fonction middleware capture l'adresse IP du client à partir de l'en-tête X-Forwarded-For s'il est présent ; sinon, il revient à req.connection.remoteAddress. Cela garantit que vous obtenez la bonne adresse IP quel que soit l'environnement de déploiement de votre application.
Amélioration des données IP avec IPQuery
Une fois que vous avez obtenu l'adresse IP du client, enrichir ces données avec des informations de géolocalisation et d'évaluation des risques peut fournir des informations précieuses. IPQuery est une API robuste conçue pour les développeurs, offrant des fonctionnalités telles que la détection VPN, la géolocalisation et la veille sur les menaces. Prenant en charge IPv4 et IPv6, IPQuery offre des recherches rapides avec une faible latence, ce qui en fait un excellent choix pour les applications en temps réel.
Configuration d'IPQuery dans votre application Express
Pour intégrer IPQuery dans votre application Express, suivez ces étapes :
Axios est un client HTTP basé sur des promesses pour Node.js, facilitant les requêtes HTTP. Installez-le en utilisant npm :
npm install axios
Développer une fonction qui envoie une requête à l'API IPQuery et traite la réponse :
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; } }
Modifiez votre middleware Express pour utiliser la fonction 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(); });
Ce middleware récupère l'adresse IP du client, récupère des informations détaillées à partir d'IPQuery et enregistre les détails pertinents tels que l'emplacement, le FAI et le score de risque.
Comprendre la structure de réponse d'IPQuery
IPQuery fournit une réponse JSON complète contenant divers points de données :
{ "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 } }
Les composants clés incluent :
Pour des informations plus détaillées, reportez-vous à la documentation IPQuery.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!