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 相关文章推荐
Confirmer JQuery确认对话框组件
Jun 09 Javascript
javascript将url中的参数加密解密代码
Nov 17 Javascript
JQuery动画与特效实例分析
Feb 02 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
Apr 25 Javascript
JSONObject使用方法详解
Dec 17 Javascript
jquery ajaxfileupload异步上传插件使用详解
Feb 08 Javascript
使用jquery给新生的th绑定hover事件的实例
Feb 10 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
Nov 17 Javascript
React组件refs的使用详解
Feb 09 Javascript
jQuery中图片展示插件highslide.js的简单dom
Apr 22 jQuery
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
Aug 03 Javascript
微信小程序APP页面的之间的相互传递参数以及自定义组件
Apr 19 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隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
关于PHP文件的自动运行方法分析
2016/05/13 PHP
PHP与以太坊交互详解
2018/08/24 PHP
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
一览画面点击复选框后获取多个id值的方法
2016/05/30 Javascript
JavaScript来实现打开链接页面的简单实例
2016/06/02 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
2016/07/22 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
jquery编写日期选择器
2017/03/16 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
AngularJS实现的锚点楼层跳转功能示例
2018/01/02 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
2018/08/01 Javascript
微信小程序实现禁止分享代码实例
2019/10/19 Javascript
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
[02:10]2018DOTA2亚洲邀请赛赛前采访-Liquid
2018/04/03 DOTA
python中from module import * 的一个坑
2014/07/20 Python
开始着手第一个Django项目
2015/07/15 Python
用python写一个windows下的定时关机脚本(推荐)
2017/03/21 Python
window下eclipse安装python插件教程
2017/04/24 Python
Python 实现简单的shell sed替换功能(实例讲解)
2017/09/29 Python
python脚本实现验证码识别
2018/06/07 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
python怎么判断模块安装完成
2020/06/19 Python
python自动提取文本中的时间(包含中文日期)
2020/08/31 Python
Django自定义YamlField实现过程解析
2020/11/11 Python
网络事业创业计划书范文
2014/01/09 职场文书
毕业生欢送会主持词
2014/03/31 职场文书
中学生操行评语
2014/04/24 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
文体活动总结
2015/02/04 职场文书
党支部半年考察意见
2015/06/01 职场文书
职工培训工作总结
2015/08/10 职场文书
对Golang中的FORM相关字段理解
2021/05/02 Golang