前端获取本机ipv4地址,谷歌 火狐 IE通用。

bg:像固定的机器发送消息,需要一个机器的唯一标识

方案

方案:
经查询找到以下几种方案
1、通过第三方api 列:ipify.org 等
2、通过JavaScript中的WebRTC技术。
3、获取 IP 需要借助 os 模块,需要先安装依赖等

WebRTC是什么

WebRTC(Web实时通信)是一种支持浏览器之间实时音频、视频和数据传输的开放标准。它通过浏览器内置的JavaScript API提供了实时通信的能力,无需任何插件或第三方软件。WebRTC可以用于构建各种应用程序,例如视频会议、实时游戏、文件共享和即时通讯等。它基于标准的网络协议,如WebSocket和ICE(Interactive Connectivity Establishment),并使用了一些编解码器和传输协议,如VP8、H.264、Opus和SRTP等。WebRTC已经得到了主流浏览器的广泛支持,包括Chrome、Firefox、Safari和Edge等。

泄露私网IPv4地址可能会导致的风险

泄露私网IPv4地址可能会导致以下风险:

网络攻击:攻击者可以使用您的私网地址来尝试入侵您的网络或设备。他们可能会利用此信息进行端口扫描、暴力破解或其他恶意活动。

数据泄露:如果您的私网地址泄露,攻击者可能能够追踪您的在线活动、收集您的敏感信息或窃取您的数据。

身份识别:通过私网地址,攻击者可能能够确定您所在的地理位置和网络服务提供商,进而识别您的身份或跟踪您的在线行为。

隐私问题:泄露私网地址可能违反您的隐私权,特别是当该信息被用于追踪、监视或滥用您的个人信息时。

因此,保护私网IPv4地址的安全性非常重要。确保您的网络设备和系统有适当的安全设置,并避免将私网地址暴露在公共网络或不受信任的平台上。另外,定期更新设备的固件和软件,使用防火墙和安全软件等措施也能提高安全性。

ipify.org 是什么? 会不会存在随意获取泄露用户信息问题?

ipify.org 是一个提供公共 IP 地址查询服务的网站,它可以帮助用户获取他们的公共 IPv4 或 IPv6
地址。根据该网站的声明,它不会记录用户的 IP 地址或其他个人信息

然而,需要注意的是,使用任何第三方服务获取 IP 地址都存在一定的隐私风险。虽然 ipify.org 声称不记录用户的 IP
地址,但我们无法完全确定其是否真的遵守了承诺,或者是否存在潜在的安全漏洞可能被攻击者利用。

因此,如果您担心隐私和数据保护问题,最好使用浏览器的内置 API 或者其他安全可靠的方法来获取 IP
地址。或者,在服务器端使用安全的脚本来获取 IP 地址,然后将结果传输给前端。

总之,使用任何第三方服务都需要谨慎,并对您的个人信息保持警惕。确保您仔细阅读并理解该服务的隐私政策和使用条款,以便做出明智的决策。
ps:网上看到有大神说该网站服务器是洛杉矶,可能存在收集用户信息等风险 我直接就不使用了,而且我用这个api获取到的是公网ip不是本机ipv4

为什么使用WebRTC是相对最为安全的方式

使用浏览器内置的 API 获取 IP 地址通常是较为安全的方式。浏览器的 API
通常受到浏览器制造商的严格控制和审查,以确保其安全性和隐私性。

其中一个常用的 API 是 WebRTC(Web实时通信)中的 RTCIceCandidate 接口,它可以用于获取本机的 IPv4
地址。使用该 API 可以直接从浏览器中获取 IP 地址,而无需依赖第三方服务。

然而,需要注意的是,即使使用浏览器内置的 API,仍然需要遵守相关的隐私法规和数据保护政策。在获取用户的 IP
地址时,您应该明确告知用户并得到其同意。此外,确保您在使用 IP 地址时采取适当的安全措施,以防止数据泄露或滥用。

总之,使用浏览器内置的 API 获取 IP 地址通常是较为安全的选择,但仍然需要遵循隐私和数据保护的最佳实践。

内网的本机IPV4地址泄露的风险 (低)

内网本机的IPv4地址通常被视为局域网内部的私有地址,无法直接从公共网络中访问。因此,仅仅泄露内网本机的IPv4地址本身并不会带来太大的风险。然而,泄露内网本机的IPv4地址可能会增加一些潜在的安全风险,例如:

  1. 网络扫描和攻击:恶意用户可以使用你的IPv4地址进行网络扫描,尝试发现和攻击你的网络设备。
  2. 社会工程攻击:攻击者可以使用你的IPv4地址伪装成你的身份,进行钓鱼或其他形式的社会工程攻击,试图获取敏感信息。
  3. 收集目标信息:攻击者可以将你的IPv4地址添加到目标列表中,并尝试通过其他手段获取更多关于你的网络环境和系统配置的信息。

为了减少这些潜在的风险,你可以采取以下措施:

  1. 配置防火墙:确保你的网络中有有效的防火墙,限制对内网的访问。
  2. 更新设备和软件:及时更新你的设备和软件,以修复已知的安全漏洞。
  3. 使用网络地址转换(NAT):通过使用NAT,将内网中的设备隐藏在公共网络后面,增加攻击者对你的网络的访问难度。
  4. 保护个人信息:避免在公开渠道上泄露个人敏感信息,例如社交媒体、论坛等。

总的来说,虽然仅仅泄露内网本机的IPv4地址本身风险相对较低,但仍建议采取一些安全措施来保护你的网络和个人信息。

前端使用js获取本机ipv4地址代码参考(参考的网上大神代码)~

const getUserIp = onNewIP => {
    const MyPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection
    const pc = new MyPeerConnection({ iceServers: [] })
    const noop = function() { }
    const localIPs = {}
    const ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g
    function iterateIP(ip) {
      if (!localIPs[ip]) onNewIP(ip)
      localIPs[ip] = true
    }
    pc.createDataChannel('')
    pc.createOffer().then(sdp => {
      sdp.sdp.split('\n').forEach(line => {
        if (line.indexOf('candidate') < 0) return
        line.match(ipRegex).forEach(iterateIP)
      })
      pc.setLocalDescription(sdp, noop, noop)
   }).catch(reason => {console.log(reason)
  })

  pc.onicecandidate = function(ice) {
    if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return
    ice.candidate.candidate.match(ipRegex).forEach(iterateIP)
  }
}

getUserIp(ip => {
   console.log(ip,'本机ip')
   sessionStorage.setItem('ip', ip)
})

浏览器配置(要配置浏览器才能获取到ip哦~)ps:自行考量是否存在风险

以下是代码测试时使用的浏览器版本 供参考
注意:谷歌浏览器86左右的版本 不好使,要升级版本在使用~

谷歌 117.0.5938.92(正式版本)
浏览器输入chrome://flags/#enable-webrtc-hide-local-ips-with-mdns 把 Anonymize local IPs exposed by WebRTC 设置为 disabled ( 刷新程序,IP正常显示 )

IE 119.0.2151.93 (正式版本)
在 edge浏览器地址栏中输入:edge://flags/
搜索 #enable-webrtc-hide-local-ips-with-mdns 该配置 并将属性改为 disabled

火狐 116.0.3
搜索about:config
将media.peerconnection.ice.obfuscate_host_addresses置为false

转载请说明出处内容投诉
CSS教程_站长资源网 » 前端获取本机ipv4地址,谷歌 火狐 IE通用。

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买