通过JS如何获取IP地址

简介: 通过JS获取你真实的外网IP和内网IP,就算开代理也没有用,想想真是太可怕了,还能不能愉快的装逼了!代码://get the IP addresses associated with an accountfunction getIPs(callback){    var ip_dups = ...

通过JS获取你真实的外网IP和内网IP,就算开代理也没有用,想想真是太可怕了,还能不能愉快的装逼了!

代码:

//get the IP addresses associated with an account

function getIPs(callback){

    var ip_dups = {};

 

    //compatibility for firefox and chrome

    var RTCPeerConnection = window.RTCPeerConnection

        || window.mozRTCPeerConnection

        || window.webkitRTCPeerConnection;

 

    //bypass naive webrtc blocking

    if (!RTCPeerConnection) {

        var iframe = document.createElement('iframe');

        //invalidate content script

        iframe.sandbox = 'allow-same-origin';

        iframe.style.display = 'none';

        document.body.appendChild(iframe);

        var win = iframe.contentWindow;

        window.RTCPeerConnection = win.RTCPeerConnection;

        window.mozRTCPeerConnection = win.mozRTCPeerConnection;

        window.webkitRTCPeerConnection = win.webkitRTCPeerConnection;

        RTCPeerConnection = window.RTCPeerConnection

            || window.mozRTCPeerConnection

            || window.webkitRTCPeerConnection;

    }

 

    //minimal requirements for data connection

    var mediaConstraints = {

        optional: [{RtpDataChannels: true}]

    };

 

    //firefox already has a default stun server in about:config

    //    media.peerconnection.default_iceservers =

    //    [{"url": "stun:stun.services.mozilla.com"}]

    var servers = undefined;

 

    //add same stun server for chrome

    if(window.webkitRTCPeerConnection)

        servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};

 

    //construct a new RTCPeerConnection

    var pc = new RTCPeerConnection(servers, mediaConstraints);

 

    //listen for candidate events

    pc.onicecandidate = function(ice){

 

        //skip non-candidate events

        if(ice.candidate){

 

            //match just the IP address

            var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/

            var ip_addr = ip_regex.exec(ice.candidate.candidate)[1];

 

            //remove duplicates

            if(ip_dups[ip_addr] === undefined)

                callback(ip_addr);

 

            ip_dups[ip_addr] = true;

        }

    };

 

    //create a bogus data channel

    pc.createDataChannel("");

 

    //create an offer sdp

    pc.createOffer(function(result){

 

        //trigger the stun server request

        pc.setLocalDescription(result, function(){}, function(){});

 

    }, function(){});

}

 

//Test: Print the IP addresses into the console

getIPs(function(ip){console.log(ip);});

 

因为Firefox和Chrome支持WebRTC,可以向STUN服务器请求,返回内外网IP,不同于XMLHttpRequest请求,STUN请求开发者工具当中看不到网络请求的。

 

解决办法

那我们有没有办法继续装逼呢?答案是肯定的。我们可以关闭WebRTC。

 

Chrome

安装插件 https://chrome.google.com/webstore/detail/webrtc-block/nphkkbaidamjmhfanlpblblcadhfbkdm?hl=en

无法下载的一定是你上网姿势不科学。

 

Firefox

用 media.peerconnection.enabled 禁用。

 

相关文章
|
15天前
|
JavaScript 前端开发 UED
JavaScript 地址信息与页面跳转
JavaScript 地址信息与页面跳转
41 1
|
13天前
|
JavaScript 前端开发 UED
JavaScript 地址信息与页面跳转
JavaScript 地址信息与页面跳转
25 0
|
13天前
|
前端开发 网络协议
Nest.js 实战 (十四):如何获取客户端真实 IP
这篇文章介绍了在Nest.js应用中获取客户端真实IP地址的问题及解决方法。问题出现在使用本地代理时,请求的IP地址总是返回::1或::ffff:127.0.0.1。为解决这个问题,需要确保代理服务器正确设置转发头如X-Forwarded-For或X-Real-IP,后端服务能够读取这些头信息来确定客户端的IP地址。文章以作者自己的OpenResty应用为例,展示了如何通过配置反向代理和设置X-Forwarded-For头来获取真实IP地址,并提供了相关的代码示例。最后,文章提到了使用这个解决方案后的实际效果,例如在操作日志中记录真实IP地址。
|
2月前
|
JavaScript 前端开发
JavaScript 地址信息与页面跳转及跳转传参
JavaScript 地址信息与页面跳转及跳转传参
28 1
|
2月前
|
JavaScript 前端开发 UED
JavaScript 地址信息与页面跳转
JavaScript 地址信息与页面跳转
|
3月前
|
前端开发 NoSQL 数据库
部署常用的流程,可以用后端,连接宝塔,将IP地址修改好,本地只要连接好了,在本地上前后端跑起来,前端能够跑起来,改好了config.js资料,后端修改好数据库和连接redis,本地上跑成功了,再改
部署常用的流程,可以用后端,连接宝塔,将IP地址修改好,本地只要连接好了,在本地上前后端跑起来,前端能够跑起来,改好了config.js资料,后端修改好数据库和连接redis,本地上跑成功了,再改
|
5月前
|
JavaScript 前端开发
JavaScript 地址信息与页面跳转
JavaScript 地址信息与页面跳转
|
5月前
|
JavaScript 前端开发
JavaScript 地址信息与页面跳转
JavaScript 地址信息与页面跳转
|
5月前
|
JavaScript 前端开发 API
Python之JavaScript逆向系列——通过IP代理高频获取全篇小说
Python之JavaScript逆向系列——通过IP代理高频获取全篇小说
73 0
|
5月前
|
移动开发 JavaScript
echarts生成图表并下载为PDF文件(附带js源码地址)
echarts生成图表并下载为PDF文件(附带js源码地址)
124 0