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 相关文章推荐
Js 中debug方式
Feb 07 Javascript
基于jquery循环map功能的代码
Feb 26 Javascript
dojo学习第一天 Tab选项卡 实现
Aug 28 Javascript
在JavaScript中重写jQuery对象的方法实例教程
Aug 25 Javascript
jQuery中mouseover事件用法实例
Dec 26 Javascript
jQuery Dialog对话框事件用法实例分析
May 10 Javascript
浅析JavaScript回调函数应用
May 22 Javascript
Bootstrap开发实战之第一次接触Bootstrap
Jun 02 Javascript
Bootstrap CSS布局之表格
Dec 17 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
Aug 02 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
Nov 12 Javascript
vue使用map代替Aarry数组循环遍历的方法
Apr 30 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
初学者入门:细述PHP4的核心Zend
2006/09/05 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
discuz加密解密函数使用方法和中文注释
2014/01/21 PHP
php使用pdo连接mssql server数据库实例
2014/12/25 PHP
PHP中iconv函数知识汇总
2015/07/02 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
jquery常用操作小结
2014/07/21 Javascript
分享一则javascript 调试技巧
2015/01/02 Javascript
js查找节点的方法小结
2015/01/13 Javascript
JS根据生日算年龄的方法
2015/05/05 Javascript
数据结构中的各种排序方法小结(JS实现)
2016/07/23 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
Vue.js学习之过滤器详解
2017/01/22 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
手动用webpack搭建第一个ReactApp的示例
2018/04/11 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
2019/09/14 Javascript
Javascript Worker子线程代码实例
2020/02/20 Javascript
jQuery实现开关灯效果
2020/08/02 jQuery
python文件操作整理汇总
2014/10/21 Python
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
python使用str &amp; repr转换字符串
2016/10/13 Python
python递归实现快速排序
2018/08/18 Python
python利用百度AI实现文字识别功能
2018/11/27 Python
python pyinstaller 加载ui路径方法
2019/06/10 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
中秋手机店促销方案
2014/06/16 职场文书
工作经历证明书范文
2014/11/02 职场文书
Python函数式编程中itertools模块详解
2021/09/15 Python
Go语言并发编程 sync.Once
2021/10/16 Golang