Mendapatkan semula Alamat IP Pelanggan dalam Express.js
Express.js, rangka kerja Node.js yang popular, memudahkan proses membina aplikasi web. Untuk mendapatkan alamat IP pelanggan dalam aplikasi Express, anda boleh mengakses sifat req.ip yang disediakan oleh rangka kerja. Walau bagaimanapun, dalam senario di mana aplikasi anda berada di belakang proksi atau pengimbang beban, IP pelanggan mungkin disimpan dalam pengepala X-Forwarded-For. Untuk mendapatkan semula IP pelanggan dengan tepat dalam kes sedemikian, pertimbangkan pendekatan berikut:
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'); });
Dalam persediaan ini, fungsi middleware menangkap alamat IP klien daripada pengepala X-Forwarded-For jika ada; jika tidak, ia akan kembali ke req.connection.remoteAddress. Ini memastikan anda memperoleh alamat IP yang betul tanpa mengira persekitaran penggunaan aplikasi anda.
Meningkatkan Data IP dengan IPQuery
Setelah anda memperoleh alamat IP pelanggan, memperkayakan data ini dengan maklumat geolokasi dan penilaian risiko boleh memberikan cerapan yang berharga. IPQuery ialah API teguh yang direka untuk pembangun, menawarkan ciri seperti pengesanan VPN, geolokasi dan risikan ancaman. Dengan sokongan untuk IPv4 dan IPv6, IPQuery menyampaikan carian pantas dengan kependaman rendah, menjadikannya pilihan yang sangat baik untuk aplikasi masa nyata.
Menyediakan IPQuery dalam Aplikasi Ekspres Anda
Untuk menyepadukan IPQuery ke dalam aplikasi Express anda, ikut langkah berikut:
Axios ialah klien HTTP berasaskan janji untuk Node.js, memudahkan permintaan HTTP. Pasang menggunakan npm:
npm install axios
Membangunkan fungsi yang menghantar permintaan kepada IPQuery API dan memproses respons:
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; } }
Ubah suai perisian tengah Express anda untuk menggunakan fungsi 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(); });
Perisian tengah ini mendapatkan semula alamat IP pelanggan, mengambil maklumat terperinci daripada IPQuery dan merekodkan butiran yang berkaitan seperti lokasi, ISP dan skor risiko.
Memahami Struktur Respons IPQuery
IPQuery menyediakan respons JSON komprehensif yang mengandungi pelbagai titik data:
{ "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 } }
Komponen utama termasuk:
Untuk maklumat lebih terperinci, rujuk dokumentasi IPQuery.
Atas ialah kandungan terperinci IP untuk Meminta API. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!