1. import java.io.Serializable;
  2. import java.net.InetAddress;
  3. import java.net.UnknownHostException;
  4.  
  5. import javax.servlet.http.HttpServletRequest;
  6.  
  7. public class IpUtil implements Serializable {
  8. private static final long serialVersionUID = -2714197398219631534L;
  9.  
  10. public static String getIpAddrByRequest(HttpServletRequest request) {
  11. String ip = request.getHeader("x-forwarded-for");
  12. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  13. ip = request.getHeader("Proxy-Client-IP");
  14. }
  15. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  16. ip = request.getHeader("WL-Proxy-Client-IP");
  17. }
  18. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  19. ip = request.getRemoteAddr();
  20. }
  21. return ip;
  22.  
  23. }
  24.  
  25. public static String getIpAddr(HttpServletRequest request) {
  26. String ipAddress = null;
  27. ipAddress = request.getHeader("x-forwarded-for");
  28. if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
  29. ipAddress = request.getHeader("Proxy-Client-IP");
  30. }
  31. if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
  32. ipAddress = request.getHeader("WL-Proxy-Client-IP");
  33. }
  34. if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
  35. ipAddress = request.getRemoteAddr();
  36.  
  37. // 这里主要是获取本机的ip,可有可无
  38. if (ipAddress.equals("127.0.0.1")
  39. || ipAddress.endsWith("0:0:0:0:0:0:1")) {
  40. // 根据网卡取本机配置的IP
  41. InetAddress inet = null;
  42. try {
  43. inet = InetAddress.getLocalHost();
  44. } catch (UnknownHostException e) {
  45. e.printStackTrace();
  46. }
  47. ipAddress = inet.getHostAddress();
  48. }
  49.  
  50. }
  51.  
  52. // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
  53. if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()
  54. // = 15
  55. if (ipAddress.indexOf(",") > 0) {
  56. ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
  57. }
  58. }
  59. return ipAddress;
  60. }
  61. }

获取访问者的IP的更多相关文章

  1. python - django (request 获取 访问者的 IP)

    使用 Django 获取访问者的 IP if request.META.get('HTTP_X_FORWARDED_FOR'): ip = request.META.get("HTTP_X_ ...

  2. 【tomcat】获取访问者真实IP

    1.直接访问tomcat的情况 通过下面这段代码可以获取: String ip = request.getHeader("x-forwarded-for"); if(ip == n ...

  3. 7个获取访问者真实IP的方法,速学!!!

    通常情况下,网站访问并不是简单地从用户的浏览器直达服务器,中间可能部署有CDN.WAF.高防.例如,采用这样的架构:“用户 > CDN/WAF/高防 > 源站服务器” .那么,在经过多层代 ...

  4. 获取访问者真实ip地址?我觉得不可能

    我们真的能通过请求来获取用户真实的ip地址嘛? 答案是不能,如果能,肯定是我学的不够深入,欢迎交流指正. 那么写这篇文章的意义是什么?我们接着往下看. IP地址相当于电脑在网络上的身份证,但事实上IP ...

  5. 获取访问者的IP地址

    function getIp() { $realip = NULL; if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ipArray = explode( ...

  6. PHP获取访问者公网IP

    if(!empty($_SERVER["HTTP_CLIENT_IP"])){  $cip = $_SERVER["HTTP_CLIENT_IP"]; } el ...

  7. Spring AOP日志实现(二)--获取访问者IP及访问路径

    获取类及方法上的@RequestMapping注解: 应该是不等于: 获取访问者的ip地址,首先配置一个监听器: 配置完监听器后,就可以在类中注入一个HttpServletRequest: 获取ip:

  8. 获取客户端真实IP地址

    Java-Web获取客户端真实IP: 发生的场景:服务器端接收客户端请求的时候,一般需要进行签名验证,客户端IP限定等情况,在进行客户端IP限定的时候,需要首先获取该真实的IP. 一般分为两种情况: ...

  9. 服务器架构前面加了防火墙,Nginx如何获取客户端真实ip???

    在大部分实际业务场景中,网站访问请求并不是简单地从用户(访问者)的浏览器直达网站的源站服务器,中间可能经过所部署的CDN.高防IP.WAF等代理服务器.例如,网站可能采用这样的部署架构:用户 > ...

随机推荐

  1. SqlServer阅读收集

    1.根据字段名,查找相关表--INFORMATION_SCHEMA.COLUMNS SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME ...

  2. Javascript 中的神器——Promise

    Promise in js 回调函数真正的问题在于他剥夺了我们使用 return 和 throw 这些关键字的能力.而 Promise 很好地解决了这一切. 2015 年 6 月,ECMAScript ...

  3. Torch 网络层 参数的初始化问题

    Torch 网络层 参数的初始化问题 参考链接: https://github.com/Kaixhin/nninit 从 Torch 中自带的包,可以看到:https://github.com/tor ...

  4. 从网易与淘宝的font-size思考前端设计稿与工作流 (转)

    从网易与淘宝的font-size思考前端设计稿与工作流   阅读目录 1. 问题的引出 2. 简单问题简单解决 3. 网易的做法 4. 淘宝的做法 5. 比较网易与淘宝的做法 6. 如何与设计协作 7 ...

  5. 【转】关于启用 HTTPS 的一些经验分享

    随着国内网络环境的持续恶化,各种篡改和劫持层出不穷,越来越多的网站选择了全站 HTTPS.HTTPS 通过 TLS 层和证书机制提供了内容加密.身份认证和数据完整性三大功能,可以有效防止数据被查看或篡 ...

  6. appium 环境搭建 java

    1 安装node.js 1.1 安装node.js http://nodejs.cn/download/ 1.2.下载后直接点击exe,按照提示一步一步的安装 1.3 安装成功后,运行cmd,输入no ...

  7. [转] Linux下 config/configure/Configure、make 、make test/make check、sudo make install 的作用

    转自:http://blog.csdn.net/secondjanuary/article/details/8985795 这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装 ...

  8. Python中对字节流/二进制流的操作:struct

    前言 前段时间使用Python解析IDX文件格式的MNIST数据集,需要对二进制文件进行读取操作,其中我使用的是struct模块.查了网上挺多教程都写的挺好的,不过对新手不是很友好,所以我重新整理了一 ...

  9. suspendlayout

    c# this.suspendlayout有什么作用 为了防止layout事件的发生.这个事件将引发重新绘图的事件,如果介面上控件较多的话,改变控件某些属性时,由于不断地重画,性能变低,所以用susp ...

  10. 【巩固】Bootstrap笔记一

    这两天开始重新巩固一下bootstrap的学习,群里有朋友介绍说麦子学院的教程不错,特地看了一下,有2个项目练习,所以跟着做了一下,下面开始笔记. <button class="nav ...