在vue项目里获取本机数据,ip,mac……

这篇具有很好参考价值的文章主要介绍了在vue项目里获取本机数据,ip,mac……。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有一个接口需要内网ip和mac地址这个需求,在网上找了很多参考的,如下:
方法一:使用webRTC,问题:在新版本的chrome 浏览器,找不到#enable-webrtc-hide-local-ips-with-mdns
代码网上找的,仅供参考,因为改不了浏览器配置,所以一直拿不到

getIP(callback) {
                let recode = {};
                let RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
                // 如果不存在则使用一个iframe绕过
                if (!RTCPeerConnection) {
                    // 因为这里用到了iframe,所以在调用这个方法的script上必须有一个iframe标签
                    // <iframe id="iframe" sandbox="allow-same-origin" style="display:none;"></iframe>
                    let win = iframe.contentWindow;
                    RTCPeerConnection = win.RTCPeerConnection || win.mozRTCPeerConnection || win.webkitRTCPeerConnection;
                }

                //创建实例,生成连接
                let pc = new RTCPeerConnection();

                // 匹配字符串中符合ip地址的字段
                function handleCandidate(candidate) {
                    let ip_regexp = /([0-9]{1,3}(\.[0-9]{1,3}){3}|([a-f0-9]{1,4}((:[a-f0-9]{1,4}){7}|:+[a-f0-9]{1,4}){6}))/;
                    console.log(candidate)
                    let ip_isMatch = candidate.match(ip_regexp)[1];
                    if (!recode[ip_isMatch]) {
                        callback(ip_isMatch);
                        recode[ip_isMatch] = true;
                    }
                }

                //监听icecandidate事件
                pc.onicecandidate = (ice) => {
                    if (ice.candidate) {
                        handleCandidate(ice.candidate.candidate);
                    }
                };
                //建立一个伪数据的通道
                pc.createDataChannel('');
                pc.createOffer((res) => {
                    pc.setLocalDescription(res);
                }, () => { });

                //延迟,让一切都能完成
                setTimeout(() => {
                    let lines = pc.localDescription.sdp.split('\n');
                    lines.forEach(item => {
                        if (item.indexOf('a=candidate:') === 0) {
                            handleCandidate(item);
                        }
                    })
                }, 1000);
            },

方法二:通过搜狐查询ip的接口,问题:能获取到,但获取的是局域网ip,不是本机的,不符合需求

<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
<script type="text/javascript">
    sessionStorage.setItem('ip', returnCitySN["cip"]);
</script>

方法三:使用ActiveX,但只支持IE浏览器,也不符合需求

getMacAddress() {
                var obj = new ActiveXObject("WbemScripting.SWbemLocator");
                var s = obj.ConnectServer(".");
                var properties = s.ExecQuery("Select * from Win32_NetworkAdapterConfiguration");
                var e = new Enumerator(properties);
                var output;
                while (!e.atEnd()) {
                    e.moveNext();
                    var p = e.item();
                    if (!p) continue;
                    if (p.IPEnabled) return p.MACAddress;
                }
                return "";
            },

方法四:使用node的os模块,问题:获取的是服务器地址,如果是将网站做成桌面软件那种应该是能获取的(猜测,这个没试过)
在vue.config.js添加如下代码

const os=require("os");
var ip=''
var mac = ''
var networkInterfaces=os.networkInterfaces();
for(var i in networkInterfaces){
    for(var j in networkInterfaces[i]){
        if(networkInterfaces[i][j]["family"]==="IPv4" && networkInterfaces[i][j]["mac"]!=="00:00:00:00:00:00" && networkInterfaces[i][j]["address"]!=="127.0.0.1"){
            mac = networkInterfaces[i][j]["mac"]
            ip = networkInterfaces[i][j]["address"]
        }else{
          ip=="127.0.0.1"
        }
    }
}

// 自定义环境变量全局使用
process.env.VUE_APP_MAC=mac
process.env.VUE_APP_IP=ip

总结:
以上方法对我这个项目的需求都不符合,在web端要获取内网ip还是不行,可能是考虑到用户隐私问题文章来源地址https://www.toymoban.com/news/detail-570207.html

到了这里,关于在vue项目里获取本机数据,ip,mac……的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue项目前端获取本机IP

    火狐(FireFox) 删除隐藏IP 浏览器输入 about:config 搜索配置 media.peerconnection.enabled 改为false ( 刷新程序,IP正常显示 ) 谷歌(Chrome) 删除隐藏IP 浏览器输入:chrome://flags/#enable-webrtc-hide-local-ips-with-mdns 把 Anonymize local IPs exposed by WebRTC 设置为 disabled ( 刷新程序,IP正常显示 ) edge浏览器删除隐

    2024年02月08日
    浏览(49)
  • Mac查看本机ip地址

    系统偏好设置—网络 2. IP地址如图所示: 打开终端—输入命令行 ifconfig | grep \\\"inet\\\" IP 地址如图所示:

    2024年02月13日
    浏览(38)
  • Mac查询本机ip地址

    Mac系统版本和网络配置不同,可能会有一些细微差别。         并回车,在输出的信息中,查找“inet”或“inet6”字样,后面跟着的数字就是你的IP地址,然后在输出中查找以 “inet “ 或 “inet6 “ 开头的行,这些行后面跟着的就是对应的IP地址。 (1)、查看特定网络接

    2024年01月23日
    浏览(48)
  • Shell脚本中获取本机ip地址,Linux获取本地ip地址

    在 Shell 脚本中获取本机 IP 地址可以通过多种方式实现,这里介绍三种常用的方法: 1. 使用 ifconfig 命令获取本机 IP 地址 ifconfig 命令可以获取本机网卡的配置信息,包括 IP 地址。可以通过 grep 命令过滤出 IP 地址信息,再使用 awk 命令提取出具体的 IP 地址。示例代码如下:

    2024年02月11日
    浏览(57)
  • JavaScript 如何获取本机IP地址

    获取本机IP地址是前端工程师经常需要处理的问题。JavaScript 有几种方法可以获取客户端的IP地址。下面是三种获取本机IP的方法。 方法1:使用第三方 API 一种获取客户端IP地址的最简单方法是使用第三方API。可以使用一些免费API,例如ipify.org等来获取IP地址。下面的代码片段展

    2024年02月04日
    浏览(55)
  • Linux c语言获取本机网关 ip 地址

    这篇文章写了获取本机的ip地址和子网掩码:Linux c语言获取本机 ip、子网掩码 关于Netlink套接字请参考:Linux 网络之netlink 简介 Linux Netlink套接字是一种用于在Linux内核和用户空间之间进行通信的机制。它是Linux内核中的一种通信协议,用于让用户空间程序与内核进行交互。使用

    2024年02月07日
    浏览(49)
  • Qt 获取本机 ip地址方法 获取客户端ip和端口的方法

    上述函数返回本机所有IPv4的ip地址列表,比如192.168.1.10|192.166.1.95 其它方法=》 获取客户端IP地址:

    2024年02月14日
    浏览(43)
  • Python获取本机IP地址的三种方式

    目录 1、使用专用网址 2、使用自带socket库 3、使用第三方netifaces库 获取的是 公网IP 。 网址:http://myip.ipip.net 代码: 具体可以类似这样:  比较喜欢用这个,在命令窗口也能使用: 还可以用这个: https://api.ipify.org 获取的是 局域网IP 。 但是上面这个获取的 不是 公网IP,结果

    2024年02月04日
    浏览(43)
  • 银河麒麟(linux 架构aarch64) 获取本机所有IP地址

    环境: 版本:银河麒麟桌面操作系统V10(SP1) 内核:Linux 5.4.18-35-generic CPU:Phytium,D2000/8 终端输入 uname -m 查看 架构 aarch64 在windows 上 和 银河麒麟(linux loongarch64) 使用下面的代码获取IP地址: 银河麒麟(linux) gethostname 获取不到IP地址_程序媛zcx的博客-CSDN博客_银河麒麟查看ip地

    2024年02月11日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包