WebRTC获取IP地址问题,Uncaught TypeError: Cannot read property '1' of null

WebRTC获取IP地址问题,Uncaught TypeError: Cannot read property '1' of null

临时接了个任务,客户要求某个账号只能在某个ip或者mac上登录,其余的情况的登录都要报错,首先就要解决看看怎么获取ip

使用的获取IP的语句如下,类似的在网上很多,主要的获取的逻辑都是一样的

    <script>
        // 创建 RTCPeerConnection 对象
        const peerConnection = new RTCPeerConnection();
        // 添加一个空的数据通道
        peerConnection.createDataChannel('dummy');
        // 创建一个 ICE 候选对象
        peerConnection.onicecandidate = (event) => {
            if (event.candidate) {
                // 提取 IP 地址信息
                //const ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/;
                const ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/;
                console.log("event.candidate.candidate :" + event.candidate.candidate);
                //candidate:3088297775 1 udp 2113937151 4b52bd75-3d6f-4c7b-8bea-394c6d2a14d3.local 60294 typ host generation 0 ufrag mKXg network-cost 999
                const ipAddress = ipRegex.exec(event.candidate.candidate)[1];
                // 输出 IP 地址
                console.log('IP 地址:', ipAddress);
                // 关闭连接
                peerConnection.close();
            }
        };
        // 创建一个 SDP(Session Description Protocol)提议
        peerConnection.createOffer().then((offer) => {
            // 设置本地描述
            return peerConnection.setLocalDescription(offer);
        }).catch((error) => {
            console.error('创建 Offer 失败:', error);
        });
    </script>

但是在edge和Chrome上执行的时候会报错,提示
Uncaught TypeError: Cannot read property '1' of null

因为说实话不是很熟悉前端,但是大概能猜到是null导致的

那么就去找是哪里null了

很快就发现,貌似那个正则并没有匹配到数据,所以要不是匹配的规则有问题,要不就是要匹配的内容有问题

很快发现,candidate的内容中并没有ip类型的数据,反而有一个.local

在网上查了一下,发现就是这部分的问题,原因是浏览器做了相应的设置,但是很难受,因为这种操作不适用我这种系统要给客户使用的情况,总不能每个人都要改设置才可以

只能另寻他路

PS:
可以使用这个网址进行查询
https://whois.pconline.com.cn/ipJson.jsp?callback=ipJson

https://api.ipify.org?format=jsonp&callback=getIP
但是我试了下,查出来的地址是准的,但是实际的ip有出入,建议自己多试试


参考:
https://blog.csdn.net/weixin_43915401/article/details/111830699

posted @ 2023-05-12 09:48  DbWong_0918  阅读(358)  评论(0编辑  收藏  举报