To lyneville(心佛):取得的IP不真实,用网段判断也是没有用的。另:同意你考虑不同平台的看法。 To wydcs(天外来痴):IP在局域网内修改无所谓,但其上互联网的出口IP是相对固定的,取MAC地址也是一种较好的办法,但实现起来就比较麻烦。 To unijune(uni):我看了一个网站的投票系统,发现走匿名代理的重复投票也无效,是PHP写的,所以我就比较郁闷了。UP!!!
To unijune(uni):匿名代理取不到真实IP是正常的,但jsp连通过透明代理后的真实IP都取不到。
用applet调用ipconfig.exe /all,并且解析返回的结果得到你需要的东西。
你可能理解错错了,ipconfig /all得到的是本机的IP设置,不是我要的东西。
应该不行吧,
前段时间那个100论坛的投票,不是php做的,不过同一网段也只能投一次,
如果你真的想一个机器投一次最好是用网卡上的MAC地址,
不过这个一般来说不在客户端装东西是取不到的
得到的才是客户端的。
我觉得JSP如果没有这个功能的话就应该改进了。顺便自己顶一下!
我倒没有听说过asp或者php能够得到由代理的客户端ip;
我想应该有机制获取;
如何获取也不清楚,顶
学ASP这么久了还没听说过.
用哪个对象呀?
这个倒是没听说过,不过我想能改最多也只是改一下windows里的注册表啥的,骗一下而已,
真的要改的话得刷网卡的eprom,我不知道这个好不好改
To wydcs(天外来痴):IP在局域网内修改无所谓,但其上互联网的出口IP是相对固定的,取MAC地址也是一种较好的办法,但实现起来就比较麻烦。
To unijune(uni):我看了一个网站的投票系统,发现走匿名代理的重复投票也无效,是PHP写的,所以我就比较郁闷了。UP!!!
又有人问获取客户端真实IP,于是我又有了一个炫耀的机会做了一个ActiveX控件,读取客户端的信息,包括CPU序列号,网卡MAC地址,硬盘序列号,主板序列号,真实IP,网关,掩码,DNS由于是ActiveX控件,所以客户端一定要是Windows + IE
JSP获取用户真实IP地址
(大致原理是这样,但我没有测试过。)String strIP = "";
String strFF = request.getHeader("X_Forwarded_For");if(strFF.equals("") || strFF"unknown")>=0 ){
strIP = request.getLocalAddr();
} else if (strFF.indexOf(",")>=0 ){
strIP = strFF.substring(0, strFF.indexOf(","));
} else if (strFF.indexOf(";")>=0 ){
strIP = strFF.substring(0, strFF.indexOf(";"));
} else {
strIP = strFF;
}
strIP = strIP.substring(0, 30).trim();
if(os != null && os.startsWith("Windows"))
{
String command = "cmd.exe /c ipconfig /all";
Process p = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while((line = br.readLine()) != null)
if(line.indexOf("Physical Address") > 0)
{
int index = line.indexOf(":");
index += 2;
macAddr = line.substring(index);
break;
}
br.close();
System.out.println("macAddr is " + macAddr.trim());
}
在服务端就可以从request中得到客户端的mac地址或者其它你需要的信息了。当然,你可以修改一下代码适应多种操作系统。
if (request.getHeader("HTTP_X_FORWARDED_FOR") == null) {
ip = request.getRemoteAddr();}
else {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
我试了一下,也没有用,request.getHeader("HTTP_X_FORWARDED_FOR") 始终为空。