Rumah > hujung hadapan web > tutorial js > IP untuk Meminta API

IP untuk Meminta API

Linda Hamilton
Lepaskan: 2024-12-21 17:07:10
asal
133 orang telah melayarinya

IP of Requesting API

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');
});
Salin selepas log masuk

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:

  1. Pasang Pelanggan HTTP Axios

Axios ialah klien HTTP berasaskan janji untuk Node.js, memudahkan permintaan HTTP. Pasang menggunakan npm:

   npm install axios
Salin selepas log masuk
  1. Buat Fungsi untuk Menyoal IPQuery

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;
     }
   }
Salin selepas log masuk
  1. Sepadukan IPQuery ke dalam Middleware Anda

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();
   });
Salin selepas log masuk

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
  }
}
Salin selepas log masuk

Komponen utama termasuk:

  • IP: Alamat IP yang ditanya.
  • ISP: Maklumat tentang Pembekal Perkhidmatan Internet, termasuk ASN, organisasi dan nama ISP.
  • Lokasi: Data geografi seperti negara, bandar, negeri dan koordinat.
  • Risiko: Penunjuk potensi risiko, termasuk sama ada IP dikaitkan dengan rangkaian mudah alih, VPN, nod Tor, proksi, pusat data dan skor risiko keseluruhan.

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan