由於出於安全性問題,javascript並不能直接獲得客戶端的IP。
但是后端語言確實可以的。
所以javascript可以通過ajax技術來獲得后端語言得到的IP,並返回到前端。
1:通過java的servlet獲取IP:
public String getRemoteAddress(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) { ip = request.getRemoteAddr(); } return ip; }
如果是用反向代理技術的話request.getHeader("x-forwarded-for");會有值,
一般情況下,只要request.getRemoteAddr();就可以了。
2:獲取MAC:
public String getMACAddress(String ip) { String str = ""; String macAddress = ""; try { Process p = Runtime.getRuntime().exec("nbtstat -a " + ip); InputStreamReader ir = new InputStreamReader(p.getInputStream()); LineNumberReader input = new LineNumberReader(ir); for (int i = 1; i < 100; i++) { str = input.readLine(); if (str != null) { //if (str.indexOf("MAC Address") > 1) { if (str.indexOf("MAC") > 1) { macAddress = str.substring( str.indexOf("=") + 2, str.length()); break; } } } } catch (IOException e) { e.printStackTrace(System.out); } return macAddress; }
通過命令nbtstat -a ip來獲得該ip相對應的mac地址。
注意:驗證時url時不要用localhost或者127.0.0.1,要使用ip的方式。