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 相关文章推荐
Windows Live的@live.com域名注册漏洞 利用代码
Dec 27 Javascript
用jscript实现列出安装的软件列表
Jun 18 Javascript
javaScript 删除字符串空格多种方法小结
Oct 24 Javascript
jQuery基于当前元素进行下一步的遍历
May 20 Javascript
AngularJS中的指令全面解析(必看)
May 20 Javascript
基于jQuery实现定位导航位置效果
Nov 15 jQuery
vscode 开发Vue项目的方法步骤
Nov 25 Javascript
详解vue项目打包步骤
Mar 29 Javascript
Vue实现拖放排序功能的实例代码
Jul 08 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
Apr 08 Javascript
openlayers实现图标拖动获取坐标
Sep 25 Javascript
VUE解决跨域问题Access to XMLHttpRequest at
May 06 Vue.js
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
PHP教程 变量定义
2009/10/23 PHP
PHP获取本周第一天和最后一天示例代码
2014/02/24 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
jQuery之选择组件的深入解析
2013/06/19 Javascript
JS获取URL中的参数数据
2013/12/05 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
jquery使用each方法遍历json格式数据实例
2015/05/18 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
2016/02/17 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
2020/10/26 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
微信小程序云开发之模拟后台增删改查
2019/05/16 Javascript
Laravel admin实现消息提醒、播放音频功能
2019/07/10 Javascript
vue动态循环出的多个select出现过的变为disabled(实例代码)
2019/11/10 Javascript
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
2020/12/19 Vue.js
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
修改python plot折线图的坐标轴刻度方法
2018/12/13 Python
Python实现大数据收集至excel的思路详解
2020/01/03 Python
西班牙在线宠物商店:zooplus.es
2017/02/24 全球购物
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
教育科研先进个人材料
2014/01/26 职场文书
医药销售求职信范文
2014/02/01 职场文书
初中语文教学反思
2014/02/02 职场文书
书法比赛获奖感言
2014/02/10 职场文书
模具设计与制造专业推荐信
2014/02/16 职场文书
园艺师求职信
2014/03/10 职场文书
八项规定对照检查材料
2014/08/31 职场文书
红色旅游心得体会
2014/09/03 职场文书
个人作风建设剖析材料
2014/10/11 职场文书
python基础之文件处理知识总结
2021/05/23 Python
无线电知识基础入门篇
2022/02/18 无线电