通过JS如何获取IP地址
通过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 禁用。
转载于:https://www.cnblogs.com/ranyonsue/p/9174137.html
通过JS如何获取IP地址相关推荐
- js获取IP地址多种方法实例教程
js获取IP地址方法总结 js代码获取IP地址的方法,如何在js中取得客户端的IP地址. 原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338. ...
- JS获取IP地址,控制台提示returnCitySN未定义的问题
问题:通过搜狐的IP地址查询接口https://pv.sohu.com/cityjsonx去获取IP地址的时候,控制台报错:returnCitySN未定义. 解决方案:可以通过在链接后面添加时间戳的方 ...
- PHP获取IP地址所在的地理位置
PHP获取IP地址所在的地理位置 时间:2011-04-02 16:19来源:三知开发网 作者:许亮 点击: 787 次 http://www.sunchis.com/html/php/phpsour ...
- kali linux查询自己的ip,Kali Linux常用服务配置教程获取IP地址
Kali Linux常用服务配置教程获取IP地址 下面以Kali Linux为例,演示获取IP地址的方法 (1)设置网络接口为自动获取IP地址.在Kali Linux的收藏夹中单击图标,将显示所有的程 ...
- python 根据地址求经纬度 谷歌_js获取ip地址利用谷歌地图获得经纬度
js获取ip地址利用谷歌地图获得经纬度-www.jquerycn.cn var massage=null; function userip(ip){ $.getScript("http:/ ...
- java获取IP地址和MAC地址方式
java获取IP地址和MAC地址方式 前端和后台都可以获取 ip获取方式比较简单,就不做分析了,主要说mac的获取 前端获取的方式与局限性:尝试好几种方式,这种是最易实现.最简单的方式,确实能获取该浏 ...
- php 获取ip地址所在的区域
/** * get_ip_lookup 获取ip地址所在的区域 * @param null $ip * @return bool|mixed */ function get_ip_lookup($ip ...
- uniapp如何获取IP地址
uniapp如何获取IP地址 获取ip地址 js获取ip地址 uni-app获取ip地址 获取ip地址 最近一个uni项目涉及到获取IP地址,在网上看到用引入外部JS的方法来获取,uni-app配置模 ...
- CentOS 7如何设置Linux开机自动获取IP地址
centos7 minimal版默认安装好后没有获取ip地址,需要手动配置.方法如下: 1.输入"ip addr"并按回车键确定,发现无法获取IP(CentOS 7默认没有ifco ...
最新文章
- 速查100 WebServers
- c 语言中浮点数舍入,浮点数在C中舍入,我不明白为什么
- 小程序跨行跨列多列复杂表格实现
- Oracle分区表常用命令
- 前端学习(285):移动端简单知识
- 第八十三期:这些高性能负载均衡架构知识点,90%的人分不清!
- php5.6 mongo 扩展,PHP5.6的安装及redis、memcache、mongo扩展
- mysql从盘延迟_Mysql-主从延迟解决方法
- Java JPA学习与使用小记
- mariadb10.2 mysql5.7_说说在MySQL5.7迁到MariaDB10.2时栽的一部分坑
- 虚拟主机支持ssl支持php7,虚拟主机支持https改造吗
- 怎么查看ofd格式电子发票? 2种简单方法免费查看
- 2019年8月 华为鸿蒙,华为2019年开发者大会将于8月9日举行,期待鸿蒙吗?
- svn: E230001: Server SSL certificate verification failed: certificate issued for a different hostnam
- penghui_031413 Bat命令学习
- 【每日英文】2021.8.5
- 密码模块安全等级 GM/T 0028
- 2022年中级会计中级经济学法考试复习题及答案
- Rabbit and Grass --- 组合博弈 GS函数 记录
- 项目管理的十大知识领域
热门文章
- boost::hana::is_empty用法的测试程序
- boost::EccentricityProperty用法的测试程序
- boost::geometry::num_geometries用法的测试程序
- boost :: dynamic_bitset时序测试
- Boost:boost::bimaps::list_of的测试程序
- DCMTK:演示状态查看器-网络发送组件(存储SCU)
- VTK:小部件之ImageTracerWidgetNonPlanar
- 为Qt Designer创建自定义Widgets小部件
- Qt Creator管理数据收集设置
- Qt Creator运行自动测试