JS获取IP、MAC和主机名的五种方法


Posted in Javascript onNovember 14, 2013

今天在搞JS(javascript)获取客户端IP的小程序,上网搜了下,好多在现在的系统和浏览器中的都无效,很无奈,在Chrome、FireFox中很少搞到直接利用ActiveX获取IP等的JS脚本。下面的代码是我在所有windowsNT5.0及以上的系统上都测试通过的,给出代码:

方法一(只针对IE且客户端的IE允许AcitiveX运行,通过平台:XP,SERVER03,2000):
获取客户端IP。

<HTML> 
<HEAD> 
<TITLE>GetLocalIP</TITLE> 
</HEAD> 
<BODY> 
获取IP: 
<script language="JavaScript"> function GetLocalIPAddr(){ var oSetting = null; var ip = null; try{ oSetting = new ActiveXObject("rcbdyctl.Setting"); ip = oSetting.GetIPAddress; if (ip.length == 0){ return "没有连接到Internet"; } oSetting = null; }catch(e){ return ip; } return ip; } document.write(GetLocalIPAddr()+"<br/>") </script> 
</BODY> 
</HTML>

方法二(所有的平台及浏览器):
获取客户端处在网络中的IP,前提是客户得联网。
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
<title>JavaScript获取客户端IP[利用新浪接口]</title> 
</head> 
<body> 
<script type="text/javascript" src="http://counter.sina.com.cn/ip/" charset="gb2312"></script> <!--获取接口数据,注意charset --> 
<script type="text/javascript"> 
document.writeln("IP地址:"+ILData[0]+"<br />"); //输出接口数据中的IP地址 
document.writeln("地址类型:"+ILData[1]+"<br />"); //输出接口数据中的IP地址的类型 
document.writeln("地址类型:"+ILData[2]+"<br />"); //输出接口数据中的IP地址的省市 
document.writeln("地址类型:"+ILData[3]+"<br />"); //输出接口数据中的IP地址的 
document.writeln("地址类型:"+ILData[4]+"<br />"); //输出接口数据中的IP地址的运营商 
</script> 
</body> 
</html>

方法三(只针对IE且客户端的IE允许AcitiveX运行):
调用VBS脚本,获取计算机名(有些人不知道什么是计算机名,简单解释就是它是这台机器的物理名称而不是你在用的那个用户名)和登录的用户名。
<HTML> 
<HEAD> 
<TITLE>WMI Scripting HTML</TITLE> 
</HEAD> 
<BODY> 
<script language=javascript> 
var WshShell =new ActiveXObject("WScript.Shell"); 
document.write("计算机名 = "+ WshShell.ExpandEnvironmentStrings("%COMPUTERNAME%")+"<br/>"); 
document.write("登录用户名 = "+ WshShell.ExpandEnvironmentStrings("%USERNAME%")+"<br/>"); 
</script> 
</BODY> 
</HTML>

方法四(只针对IE且客户端的IE允许AcitiveX运行):
获取计算机名、登录的用户名和域名(如果你加入了域,显示你这台机器处在哪个域中)。
<HTML> 
<HEAD> 
<TITLE>WMI Scripting HTML</TITLE> 
</HEAD> 
<BODY> 
<script language=javascript> 
var wshNetwork = new ActiveXObject("WScript.Network"); 
document.write("域名 = "+ wshNetwork.UserDomain+"<br/>"); 
document.write("计算机名 = "+ wshNetwork.ComputerName+"<br/>"); 
document.write("登录用户名 = "+ wshNetwork.UserName+"<br/>"); 
</script> 
</BODY> 
</HTML>

方法五(只针对IE且客户端的IE允许AcitiveX运行):
能够获取到局域网IP地址,本机的MAC,以及机器名(代码来源网络)。
<html> 
<head> 
<title></title> 
</head> 
<body> 
<object classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6" id="locator" style="display:none;visibility:hidden"></object> 
<object classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223" id="foo" style="display:none;visibility:hidden"></object> 
<form name="myForm"> 
<br/>MAC地址:<input type="text" name="macAddress"> 
<br/>IP地址:<input type="text" name="ipAddress"> 
<br/>主机名:<input type="text" name="hostName"> 
</form> 
</body> 
</html> 
<script language="javascript"> 
var sMacAddr=""; 
var sIPAddr=""; 
var sDNSName=""; 
var service = locator.ConnectServer(); 
service.Security_.ImpersonationLevel=3; 
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration'); 
</script> 
<script FOR="foo" EVENT="OnObjectReady(objObject,objAsyncContext)" LANGUAGE="JScript"> 
if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true){ 
if(objObject.IPEnabled && objObject.IPAddress(0) !=null && objObject.IPAddress(0) != "undefined") 
sIPAddr = objObject.IPAddress(0); 
if(objObject.MACAddress != null &&objObject.MACAddress != "undefined") 
sMacAddr = objObject.MACAddress; 
if(objObject.DNSHostName != null &&objObject.DNSHostName != "undefined") 
sDNSName = objObject.DNSHostName; 
} 
</script> <script FOR="foo" EVENT="OnCompleted(hResult,pErrorObject, pAsyncContext)" LANGUAGE="JScript"> 
myForm.macAddress.value=sMacAddr; 
myForm.ipAddress.value=sIPAddr; 
myForm.hostName.value=sDNSName; 
</script>
Javascript 相关文章推荐
W3C Group的JavaScript1.8 新特性介绍
May 19 Javascript
window.event快达到全浏览器支持了,以后使用就方便了
Nov 30 Javascript
教你如何使用PHP输出中文JSON字符串
May 22 Javascript
基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
May 12 Javascript
Bootstrap表单布局
Jul 19 Javascript
JavaScript中ES6字符串扩展方法
Aug 26 Javascript
用AngularJS的指令实现tabs切换效果
Aug 31 Javascript
JS限制条件补全问题实例分析
Dec 16 Javascript
jQuery实现表单动态加减、ajax表单提交功能
Jun 08 jQuery
详解如何在vue项目中使用eslint+prettier格式化代码
Nov 10 Javascript
微信小程序实现Swiper轮播图效果
Nov 22 Javascript
js实现无限层级树形数据结构(创新算法)
Feb 27 Javascript
javascript验证上传文件的类型限制必须为某些格式
Nov 14 #Javascript
js截取小数点后几位的写法
Nov 14 #Javascript
js 判断文件类型并控制表单提交示例代码
Nov 14 #Javascript
基于jquery实现的文字淡入淡出效果
Nov 14 #Javascript
JQuery实现倒计时按钮具体方法
Nov 14 #Javascript
jquery动态增加删除表格行的小例子
Nov 14 #Javascript
js取消单选按钮选中并判断对象是否为空
Nov 14 #Javascript
You might like
什么是短波收听SWL
2021/03/01 无线电
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
jQuery.extend 函数的详细用法
2012/06/27 Javascript
js操作iframe的一些方法介绍
2013/06/25 Javascript
jQuery拖拽 &amp; 弹出层 介绍与示例
2013/12/27 Javascript
extjs 如何给column 加上提示
2014/07/29 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
jquery实现的V字形显示效果代码
2015/10/27 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
Bootstrap modal只加载一次数据的解决办法(推荐)
2017/11/24 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
2018/06/29 Javascript
Angular2 自定义表单验证器的实现方法
2018/12/14 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
[01:23:35]Ti4主赛事胜者组 DK vs EG 1
2014/07/19 DOTA
[02:27]2018DOTA2亚洲邀请赛赛前采访-OpTic
2018/04/03 DOTA
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
python snownlp情感分析简易demo(分享)
2017/06/04 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
详解Python的循环结构知识点
2019/05/20 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
TensorFlow tf.nn.max_pool实现池化操作方式
2020/01/04 Python
python代码xml转txt实例
2020/03/10 Python
浅谈Python3中print函数的换行
2020/08/05 Python
意大利奢华内衣制造商:Cosabella
2017/08/29 全球购物
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
超市5.1促销活动
2014/01/15 职场文书
2014年教师节寄语
2014/04/03 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
幼儿园六一儿童节活动总结
2015/02/10 职场文书
2016大学生社会实践心得体会范文
2016/01/14 职场文书
vue实现登陆页面开发实践
2022/05/30 Vue.js