当前位置:首页 > JavaScript

js实现ip

2026-04-05 13:36:59JavaScript

获取客户端IP地址(前端JavaScript)

在浏览器环境中,JavaScript无法直接获取用户的真实IP地址,但可以通过以下方法获取客户端IP的近似信息:

js实现ip

使用WebRTC获取本地IP

js实现ip

function getLocalIP() {
  return new Promise((resolve, reject) => {
    const RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
    const pc = new RTCPeerConnection({ iceServers: [] });
    const noop = () => {};

    pc.createDataChannel('');
    pc.createOffer().then(offer => pc.setLocalDescription(offer, noop, noop));
    pc.onicecandidate = (ice) => {
      if (!ice || !ice.candidate || !ice.candidate.candidate) return;
      const ip = ice.candidate.candidate.split(' ')[4];
      resolve(ip);
      pc.onicecandidate = noop;
    };
  });
}

getLocalIP().then(ip => console.log('Local IP:', ip));

通过第三方API获取公网IP

async function getPublicIP() {
  try {
    const response = await fetch('https://api.ipify.org?format=json');
    const data = await response.json();
    return data.ip;
  } catch (error) {
    console.error('Error fetching IP:', error);
    return null;
  }
}

getPublicIP().then(ip => console.log('Public IP:', ip));

服务器端获取IP(Node.js示例)

在Node.js后端环境中,可以通过以下方式获取客户端IP:

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

app.get('/get-ip', (req, res) => {
  const clientIP = req.headers['x-forwarded-for'] || req.socket.remoteAddress;
  res.json({ ip: clientIP });
});

app.listen(3000, () => console.log('Server running on port 3000'));

注意事项

  • 前端获取的IP可能不准确(受VPN/代理影响)
  • WebRTC方法可能被浏览器隐私设置阻止
  • 第三方API可能有速率限制
  • 真实生产环境应结合后端服务验证IP

常用IP API服务

  1. ipify.org(免费)
  2. ip-api.com(免费/付费)
  3. ipinfo.io(付费)
  4. BigDataCloud(免费套餐)

标签: jsip
分享给朋友:

相关文章

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与响应式…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…