### JS获取客户端IP地址、MAC和主机名的7个方法详解
#### 一、使用JS获取客户端IP的方法
##### 方法一:使用ActiveX获取IP(仅适用于IE浏览器)
这种方法依赖于`ActiveXObject`来实现,因此只能在允许运行ActiveX控件的IE浏览器中使用。在现代浏览器如Chrome或Firefox中不可行。
**代码示例**:
```html
<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";
}
} catch (e) {
return ip;
}
return ip;
}
document.write(GetLocalIPAddr() + "<br/>");
</script>
```
**适用场景**:此方法适用于Windows NT 5.0及以上版本的操作系统,并且需要客户端的IE浏览器允许运行ActiveX控件。
---
##### 方法二:使用新浪接口获取IP
此方法利用新浪提供的API来获取客户端的公网IP地址。这种方法不需要浏览器支持ActiveX控件,因此更通用。
**代码示例**:
```html
<script type="text/javascript" src="http://counter.sina.com.cn/ip/" charset="gb2312"></script>
<script type="text/javascript">
document.writeln("IP地址:" + ILData[0] + "<br/>");
document.writeln("地址类型:" + ILData[1] + "<br/>");
document.writeln("地址类型:" + ILData[2] + "<br/>");
document.writeln("地址类型:" + ILData[3] + "<br/>");
document.writeln("地址类型:" + ILData[4] + "<br/>");
</script>
```
**注意事项**:
- 该接口返回的数据格式为数组`ILData`,其中包含了客户端的IP地址以及相关信息。
- 需要注意字符集问题,这里设置了`charset`为`gb2312`。
---
##### 方法三:使用搜狐接口获取IP
搜狐也提供了类似的接口服务,可以直接在页面中调用并显示客户端的IP地址及其所在地区。
**代码示例**:
```html
<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
<script type="text/javascript">
document.write(returnCitySN["cip"] + ',' + returnCitySN["cname"]);
</script>
```
**特点**:
- 这个接口同样返回一个包含IP地址和位置信息的对象。
- 使用时需要注意字符集设置为`utf-8`。
---
##### 方法四:太平洋电脑网IP查询接口
这种方法利用太平洋电脑网提供的IP查询功能,可以通过调用接口来获取客户端的IP地址及相关信息。
**接口调用**:
```html
http://whois.pconline.com.cn/?ip=0.0.0.0
```
将`0.0.0.0`替换为客户机的真实IP地址即可。
**应用场景**:
- 适用于需要根据客户端IP地址进行地理定位的场景,如电商网站自动识别用户所在城市并提供相应服务。
---
#### 二、使用JS获取计算机名、MAC地址、局域网IP
##### 方法一:使用ActiveX获取计算机名
此方法同样是基于`ActiveXObject`实现的,因此仅适用于允许运行ActiveX控件的IE浏览器。
**代码示例**:
```html
<script language="JavaScript">
var WshShell = new ActiveXObject("WScript.Shell");
document.write("计算机名=" + WshShell.ExpandEnvironmentStrings("%COMPUTERNAME%") + "<br/>");
</script>
```
**适用范围**:此方法只能在允许运行ActiveX控件的IE浏览器中使用。
---
#### 总结
以上方法提供了多种不同的途径来获取客户端的IP地址、计算机名等信息。值得注意的是,由于现代浏览器的安全限制,许多方法仅适用于特定浏览器环境,特别是IE浏览器。对于需要跨浏览器兼容性的场景,建议使用如新浪接口、搜狐接口等第三方服务,它们不依赖于特定浏览器特性,更加通用和安全。