前端如何獲取IP地址

一、利用JavaScript獲取IP地址

1、通過向第三方服務器發送請求獲取IP


function getIP(callback) {
  const xhr = new XMLHttpRequest();
  xhr.open("GET", "https://api.ipify.org", true);
  xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
        callback(xhr.responseText);
    }
  };
  xhr.send();
}
getIP(function(ip){
  console.log(ip);
})

2、通過WebSocket獲取IP


const socket = new WebSocket("wss://echo.websocket.org");
socket.onopen = function(event) {
  socket.send("getIP");
};
socket.onmessage = function(event) {
  const ip = event.data;
  console.log(ip);
  socket.close();
};

二、利用WebRTC技術獲取IP地址

1、獲取局域網IP


function getIPAddresses() {
  const rtcp = new RTCPeerConnection({iceServers:[]});
  const addrs = {};
  rtcp.createDataChannel('', {reliable:false});
  rtcp.onicecandidate = function(evt) {
    if (evt.candidate) {
      const addr = /[0-9]+(?:\.[0-9]+){3}/.exec(evt.candidate.candidate)[0];
      addrs[addr] = true;
      console.log(Object.keys(addrs));
    }
  };
  setTimeout(function() { rtcp.close(); }, 500);
}
getIPAddresses();

2、獲取公網IP


let gettingIPInfo = new Promise((resolve, reject)=> {
  window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
  if (!window.RTCPeerConnection) {
    reject("WebRTC not supported");
  }
  let pc = new RTCPeerConnection();
  let ips = [];
  pc.createDataChannel("");
  pc.createOffer((result)=>{
      let sdp = result.sdp;
      let lines = sdp.split("\n");
      lines.forEach ((line,index)=>{
          if(line.indexOf("candidate") !== -1) {
              let regex = /(?{
  console.log(ips);
});

三、利用第三方服務獲取IP地址

1、通過ip138.com獲取IP


$.ajax({
  url: 'https://api.ip138.com/ip/?ip=&datatype=jsonp&token=您申請的Token',
  type: 'get',
  dataType: 'jsonp',
  success: function (data) {
      console.log(data);
  }
});

2、通過ipify.org獲取IP


$.getJSON("https://api.ipify.org?format=json", function(data){
    console.log(data.ip);
});

四、利用後端服務獲取IP地址

1、通過Node.js獲取IP


const http = require('http');
const server = http.createServer((req, res) => {
  const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
  res.end(ip);
});
server.listen(3000);

2、通過PHP獲取IP


echo $_SERVER['REMOTE_ADDR'];

3、通過Java獲取IP


String ip = request.getHeader("X-Forwarded-For");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  ip = request.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  ip = request.getRemoteAddr();
}
return ip;

原創文章,作者:AJOBM,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/371727.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
AJOBM的頭像AJOBM
上一篇 2025-04-23 18:08
下一篇 2025-04-23 18:08

相關推薦

  • cmd看地址

    本文將從多個方面詳細闡述cmd看地址,包括如何查看本機IP地址、如何查看路由器IP、如何查看DNS服務器IP等等。 一、查看本機IP地址 要查看本機IP地址,首先需要打開cmd窗口…

    編程 2025-04-29
  • 尚硅谷官網地址用法介紹

    尚硅谷是國內一家領先的技術培訓機構,提供了眾多IT職業的培訓,包括Java、Python、大數據、前端、人工智能等方向。其官網地址為http://www.atguigu.com/。…

    編程 2025-04-29
  • Centos7配置靜態ip

    本文將詳細闡述如何在Centos7系統中配置靜態ip。 一、查看網絡接口 在配置靜態ip之前,我們首先需要查看系統中的網絡接口,以確定我們需要配置的網卡是哪一個。 ifconfig…

    編程 2025-04-29
  • Python檢測IP連通

    Python是一門強大的編程語言,常用於網絡開發、數據分析等領域。IP地址是網絡通信的基礎,在網絡通信中,有時需要檢測IP地址是否連通。下面將從多個方面介紹Python檢測IP連通…

    編程 2025-04-28
  • Idea2022變更Git地址

    本文將從以下幾個方面對Idea2022變更Git地址進行詳細闡述: 一、GitHub上修改Git倉庫地址 1、登錄GitHub,找到需要修改的Git倉庫 2、在代碼頁面點擊右上角的…

    編程 2025-04-28
  • Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901解析

    本文將對Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901進行詳細解析,並提供相關代碼示例。 一、漏洞背景 Treck TCP/IP Stack是一…

    編程 2025-04-27
  • electron-egg打包後請求地址錯誤解決方法用法介紹

    本文將從多個方面對electron-egg打包後請求地址錯誤進行詳細闡述,並給出解決方法。 一、electron-egg打包後請求地址錯誤的表現 在使用 electron-egg …

    編程 2025-04-27
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若服務器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • Python如何判斷IP地址合法性

    IP地址是網絡通信的基礎,因此判斷IP地址合法性是編程中常見的問題。Python作為一門強大的編程語言,提供了多種方法來判斷IP地址的合法性。 一、判斷IP地址格式是否正確 IP地…

    編程 2025-04-27
  • Python處理“該請求的地址無效”的解決方法

    本文將從以下幾個方面為大家詳細闡述在python中處理“該請求的地址無效”的解決方法。 一、檢查URL地址是否正確 當我們在使用Python發送網絡請求時,如果URL地址不正確,就…

    編程 2025-04-27

發表回復

登錄後才能評論