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 parseInt(&quot;08&quot;)未指定进位制问题
Jun 19 Javascript
基于jquery实现的定时显示与隐藏div广告的实现代码
Aug 22 Javascript
如何通过javascript操作web控件的自定义属性
Nov 25 Javascript
Javascript检查图片大小不要让大图片撑破页面
Nov 04 Javascript
express的中间件bodyParser详解
Dec 04 Javascript
javascript原型链继承用法实例分析
Jan 28 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
Dec 02 Javascript
ionic实现滑动的三种方式
Aug 27 Javascript
jquery 实现回车登录详解及实例代码
Oct 23 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
Jun 01 Javascript
vue数据操作之点击事件实现num加减功能示例
Jan 19 Javascript
详解用js代码触发dom事件的实现方案
Jun 10 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
PHP常用的缓存技术汇总
2014/05/05 PHP
[原创]php获取数组中键值最大数组项的索引值
2015/03/17 PHP
PHP中的流(streams)浅析
2015/07/02 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
用Laravel轻松处理千万级数据的方法实现
2020/12/25 PHP
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
jQuery结合CSS制作动态的下拉菜单
2015/10/27 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
HTML5 js实现拖拉上传文件功能
2020/11/20 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
Javascript如何实现扩充基本类型
2020/08/26 Javascript
详解vue 中 scoped 样式作用域的规则
2020/09/14 Javascript
[01:17]Ti4 循环赛第一日回顾
2014/07/11 DOTA
打印出python 当前全局变量和入口参数的所有属性
2009/07/01 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
Python 脚本拉取 Docker 镜像问题
2019/11/10 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
Django使用Celery加redis执行异步任务的实例内容
2020/02/20 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
Ruby如何进行文件操作
2014/07/17 面试题
志愿者活动总结
2014/04/28 职场文书
商务日语专业的自荐信
2014/05/23 职场文书
党员民主评议自我评价
2014/10/20 职场文书
师德先进个人材料
2014/12/20 职场文书
python Django框架快速入门教程(后台管理)
2021/07/21 Python
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA
Java 超详细讲解ThreadLocal类的使用
2022/04/07 Java/Android