JS获取客户端IP地址、MAC和主机名的7个方法汇总


Posted in Javascript onJuly 21, 2014

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

一、使用JS获取客户端IP的几个方法

方法一(只针对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>

方法三(所有的平台及浏览器):
使用的搜狐接口

<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>  

<script type="text/javascript">  

document.write(returnCitySN["cip"]+','+returnCitySN["cname"])  

</script>

方法四:太平洋电脑网IP查询接口:

http://whois.pconline.com.cn/?ip=0.0.0.0

把0.0.0.0换成IP地址,页面上还有其他无关内容,这些内容是告诉我们哪些接口可以调用、接口调用参数和使用方法等

通过上边的js接口调用就可以判断用于属于哪个城市,直接显示该城市的相关信息了,对于需要城市切换的网站,首次判断用户来源非常有帮助。

二、使用JS获取计算机名、MAC地址、局域网IP

方法一(只针对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 固定悬浮效果实现思路代码
Aug 02 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
Dec 02 Javascript
Jquery遍历节点的方法小集
Jan 22 Javascript
javascript数组操作(创建、元素删除、数组的拷贝)
Apr 07 Javascript
Javascript常用字符串判断函数代码分享
Dec 08 Javascript
JQuery插件Marquee.js实现无缝滚动效果
Apr 26 Javascript
深入浅析JavaScript中的Function类型
Jul 09 Javascript
jquery实现左右滑动式轮播图
Mar 02 Javascript
js调用刷新界面的几种方式
May 03 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
Jun 19 Javascript
Vue入门之数量加减运算操作示例
Dec 11 Javascript
JS中实现浅拷贝和深拷贝的代码详解
Jun 05 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
Jul 21 #Javascript
关于jQuery判断元素是否存在的问题示例探讨
Jul 21 #Javascript
一个简单的jQuery计算器实现了连续计算功能
Jul 21 #Javascript
JavaScript访问CSS属性的几种方式介绍
Jul 21 #Javascript
javascript实现的元素拖动函数宿主为浏览器
Jul 21 #Javascript
javascript定义变量时有var和没有var的区别探讨
Jul 21 #Javascript
JQuery中$(document)是什么意思有什么作用
Jul 21 #Javascript
You might like
第二节 对象模型 [2]
2006/10/09 PHP
PHP 5.0 Pear安装方法
2006/12/06 PHP
使用PHP编写发红包程序
2015/07/22 PHP
php头像上传预览实例代码
2017/05/02 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
二叉树先序遍历的非递归算法具体实现
2014/01/09 Javascript
jQuery老黄历完整实现方法
2015/01/16 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
ArtEditor富文本编辑器增加表单提交功能
2016/04/18 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
详解vue axios二次封装
2018/07/22 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
Python简单进程锁代码实例
2015/04/27 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
python万年历实现代码 含运行结果
2017/05/20 Python
python 实现矩阵填充0的例子
2019/11/29 Python
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
2021/01/27 HTML / CSS
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
女性时尚在线:IVRose
2019/02/23 全球购物
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
医学检验专业大学生求职信
2013/11/18 职场文书
公司年会抽奖活动主持词
2014/03/31 职场文书
大学自主招生推荐信
2014/05/10 职场文书
教师工作能力自我评价
2015/03/04 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL
Python torch.flatten()函数案例详解
2021/08/30 Python