js获取ip地址、浏览器信息
前端开发时,有些需求,需要得到访问客户的ip地址,大多时候靠后端完成,但其实前端也可以拿到,例如下面三种:
第一种:用于仅支持IE的且允许Activex运行,利用ActiveObject来获取。
第二种:利用其它平台的接口,在自己程序中使用如:新浪,搜狐、太平洋等的接口,来给用户返回ip地址
<script type="text/javascript" src="http://pv.sohu.com/cityjson?ie=utf-8"></script><script>// 公网ip地址console.log(returnCitySN["cip"])</script>
第三种:使用WebRTC(Web Real-Time Communications),他的定义是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。这些信息和基本api在MDN上面是可以查看的。我们可以使用WebRTC获取ip地址,经测试,在chrome,opera,firefox,safari均可正常获取,对于IE和Edge,可以采用第一种方式进行兼容。下面是获取代码(这里没有支持IE/Edge):
如果使用 chrome 浏览器打开,此时可能会看到一串类似于:`e87e041d-15e1-4662-adad-7a6601fca9fb.local 的机器码,这是因为chrome 默认是隐藏掉 内网IP地址的,可以通过修改 chrome 浏览器的配置更改此行为:
在chrome 浏览器地址栏中输入:chrome://flags/
搜索#enable-webrtc-hide-local-ips-with-mdns 该配置 并将属性改为 disabled
// 内网ip地址var RTCPeerConnection =window.webkitRTCPeerConnection || window.mozRTCPeerConnection;if (RTCPeerConnection) (function () {var rtc = new RTCPeerConnection({iceServers:[]});if (1 || window.mozRTCPeerConnection) { rtc.createDataChannel('', {reliable:false});};rtc.onicecandidate = function (evt) {// convert the candidate to SDP so we can run it through our general parser// see https://twitter.com/lancestout/status/525796175425720320 for detailsif (evt.candidate) grepSDP("a="+evt.candidate.candidate);};rtc.createOffer(function (offerDesc) {grepSDP(offerDesc.sdp);rtc.setLocalDescription(offerDesc);}, function (e) { console.warn("offer failed", e); });var addrs = Object.create(null);addrs["0.0.0.0"] = false;function updateDisplay(newAddr) {if (newAddr in addrs) return;else addrs[newAddr] = true;var displayAddrs = Object.keys(addrs).filter(function (k) { return addrs[k]; });document.getElementById('list').textContent = displayAddrs.join(" or perhaps ") || "n/a";}function grepSDP(sdp) {var hosts = [];sdp.split('\r\n').forEach(function (line) { if (~line.indexOf("a=candidate")) { var parts = line.split(' '), addr = parts[4],type = parts[7];if (type === 'host') updateDisplay(addr);} else if (~line.indexOf("c=")) { var parts = line.split(' '),addr = parts[2];updateDisplay(addr);}});}})(); else {document.getElementById('list').innerHTML = "<code>ifconfig | grep inet | grep -v inet6 | cut -d\" \" -f2 | tail -n1</code>";document.getElementById('list').nextSibling.textContent = "In Chrome and Firefox your IP should display automatically, by the power of WebRTCskull.";}
获取浏览器信息:使用包含浏览器信息的Navigator对象,这个对象虽然没有公开标准,但是所有的浏览器都支持他,主要用到的是useragent属性,它包含了这些信息,我们要做的只是使用正则表达式分离和提取,针对不同的浏览器,兼容chrome,firefox,opera,ie,edge,safari等,对于其他浏览器,例如360极速等,会返回相应内核对应的浏览器名称。也可以再进行其他判断。下面是代码:
function getBrowserInfo(){var agent = navigator.userAgent.toLowerCase() ;console.log(agent);var arr = [];var system = agent.split(' ')[1].split(' ')[0].split('(')[1];arr.push(system);var regStr_edge = /edge\/[\d.]+/gi;var regStr_ie = /trident\/[\d.]+/gi ;var regStr_ff = /firefox\/[\d.]+/gi;var regStr_chrome = /chrome\/[\d.]+/gi ;var regStr_saf = /safari\/[\d.]+/gi ;var regStr_opera = /opr\/[\d.]+/gi;//IEif(agent.indexOf("trident") > 0){arr.push(agent.match(regStr_ie)[0].split('/')[0]);arr.push(agent.match(regStr_ie)[0].split('/')[1]);return arr;}//Edgeif(agent.indexOf('edge') > 0){arr.push(agent.match(regStr_edge)[0].split('/')[0]);arr.push(agent.match(regStr_edge)[0].split('/')[1]);return arr;}//firefoxif(agent.indexOf("firefox") > 0){arr.push(agent.match(regStr_ff)[0].split('/')[0]);arr.push(agent.match(regStr_ff)[0].split('/')[1]);return arr;}//Operaif(agent.indexOf("opr")>0){arr.push(agent.match(regStr_opera)[0].split('/')[0]);arr.push(agent.match(regStr_opera)[0].split('/')[1]);return arr;}//Safariif(agent.indexOf("safari") > 0 && agent.indexOf("chrome") < 0){arr.push(agent.match(regStr_saf)[0].split('/')[0]);arr.push(agent.match(regStr_saf)[0].split('/')[1]);return arr;}//Chromeif(agent.indexOf("chrome") > 0){arr.push(agent.match(regStr_chrome)[0].split('/')[0]);arr.push(agent.match(regStr_chrome)[0].split('/')[1]);return arr;}else{arr.push('请更换主流浏览器,例如chrome,firefox,opera,safari,IE,Edge!')return arr;}}
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未定义. 解决方案:可以通过在链接后面添加时间戳的方 ...
- js获取ip地址_(原创)Node.JS实战31:大名鼎鼎的Express!
Express (http://expressjs.com)是Node.JS中一个简洁.灵活.强大的Web应用框架, 它提供了一系列强大特性,可以帮助我们快速创建各种Web 应用,也可用来编写各种的W ...
- JS获取IP地址,登录地点的方法
JS <!--下面一个开放的JS中有一个方法可以获取当前IP地址--> <script src="http://pv.sohu.com/cityjson?ie=utf-8& ...
- 利用前端js获取ip地址
方法三(所有的平台及浏览器): 使用的搜狐接口 复制代码 代码如下: <script src="http://pv.sohu.com/cityjson?ie=utf-8"&g ...
- IE JS获取IP地址
1.IE打开该HTML文件 2.允许Activex运行 3.F12打开开发者工具查看IP ps: 该代码参考自:https://stackoverflow.com/questions/50640062 ...
- js 获取ip地址进行跳转
搜狐: 第一步:在页面上引用: <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script> 上 ...
- JS获取系统和浏览器信息
- uniapp如何获取IP地址
uniapp如何获取IP地址 获取ip地址 js获取ip地址 uni-app获取ip地址 获取ip地址 最近一个uni项目涉及到获取IP地址,在网上看到用引入外部JS的方法来获取,uni-app配置模 ...
- python 根据地址求经纬度 谷歌_js获取ip地址利用谷歌地图获得经纬度
js获取ip地址利用谷歌地图获得经纬度-www.jquerycn.cn var massage=null; function userip(ip){ $.getScript("http:/ ...
最新文章
- linux+平均磁盘请求数量_SUSE LINUX下磁盘IO性能监测分析
- Windows2008下搭建NFS实现windows空间提供linux使用
- python编写一个压测重启的测试程序
- Java的poi的excel导入怎么判断日期格式的单元格
- Java代码生成同一色系颜色_求大侠帮忙给这段JAVA代码 设置个背景颜色!
- ndarray python 映射_在Matlab的delsq演示中,用numpy方法对向量映射进行ndarray处理?...
- thinkphp结合U方法,点击验证码刷新
- csdn android视频播放器开发
- java是如何简化成一行代码的?-----Lambda表达式初识
- Flash游戏破解参考
- Postman下载与安装详细步骤
- 向量的方向余弦公式_方向余弦怎么求
- 直接加QQ好友的链接或会话的方法
- ARM9——五级流水线结构,以及PC指针
- 论文笔记:Teaching Machine to Read and Comprehend
- STM32CubeMX5.6.1生成的代码无启动文件
- C++笔记(Ⅵ_模板)
- 信息流广告投放的技巧
- 庖丁解牛linux内核,庖丁解牛Linux网络核心
- 哈希表:线性探查法和平方探查法