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 相关文章推荐
JQuery 构建客户/服务分离的链接模型中Table中的排序分析
Jan 22 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
May 07 Javascript
jqGrid读取选择的多行的某个属性代码
May 18 Javascript
Nginx上传文件全部缓存解决方案
Aug 17 Javascript
jquery实现的动态回到顶部特效代码
Oct 28 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
Oct 09 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
Nov 24 Javascript
jquery pagination插件动态分页实例(Bootstrap分页)
Dec 23 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
Aug 09 Javascript
vue-cli3.0配置及使用注意事项详解
Sep 05 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
Sep 21 Javascript
ES6学习笔记之let与const用法实例分析
Jan 22 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
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
基于PHP实现生成随机水印图片
2020/12/09 PHP
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
JQuery实现table行折叠效果以JSON做数据源
2014/05/26 Javascript
Jquery选择器中使用变量实现动态选择例子
2014/07/25 Javascript
静态页面html中跳转传值的JS处理技巧
2016/06/22 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
node使用UEditor富文本编辑器的方法实例
2017/07/11 Javascript
史上最全JavaScript数组去重的十种方法(推荐)
2017/08/17 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
2018/09/27 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
详解Python的Flask框架中生成SECRET_KEY密钥的方法
2016/06/07 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
python利用不到一百行代码实现一个小siri
2017/03/02 Python
python nohup 实现远程运行不宕机操作
2020/04/16 Python
Python super()函数使用及多重继承
2020/05/06 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
青年教师培训方案
2014/02/06 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
物业管理工作方案
2014/05/10 职场文书
给校长的建议书100字
2014/05/16 职场文书
个人承诺书格式
2014/06/03 职场文书
计算机实训报告范文
2014/11/05 职场文书
2014年体育部工作总结
2014/11/13 职场文书
公司财务部岗位职责
2015/04/14 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP