通过JS获取真实的外网IP和内网IP以及IPv6地址

 缙哥哥
评分 5.00, 满分 5 分
1
 1,383 ℃ 7条点评
小号字体中号字体大号字体
代码如下解决办法 通过JS获取你真实的外网IP和内网IP以及IPv6地址,就算开代理也没有用,想想真是太可怕了,还能不能愉快的装逼了!效果如下:...

通过JS获取你真实的外网IP内网IP以及IPv6地址,就算开代理也没有用,想想真是太可怕了,还能不能愉快的装逼了!效果如下:

20151009125151

代码如下

//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

无法下载的一定是你上网姿势不科学,去缙哥哥的博客看看《畅游无限浏览器 第十版0802高速修正版》。

20151009124650

Firefox

用 media.peerconnection.enabled 禁用。BTW,方法网上看到了,电脑没装Firefox,所以你们自己摸索吧。

参考资料

  • https://github.com/diafygi/webrtc-ips
  • http://www.v2ex.com/t/167243
打赏
本文标签:
分享到
利用BDUSS Cookie查看贴吧绑定的完整手机号
如何用电脑免费发短信

已有7条评论,欢迎点评!

您必须 [ 登录 ] 才能发表留言!

  1. avatar
    #1luya

    只获取外网IP怎么改?

    2016-11-30 14:10
    • avatar
      #1-1缙哥哥 @ luya

      什么意思?

      2016-11-30 14:17
      • avatar
        #1-2luya @ 缙哥哥

        就是你写那个获取Ip地址代码,返回的是string,我的Ip地址位数不一定,不好截取,我如果只获取外网的Ip地址我要怎么改?因为这个代码我不怎么看得懂,不知道怎么改。

        2016-11-30 14:19


注册帐号  | 忘记密码