获取客户端IP和设备型号
获取ip地址
@GetMapping(value = "/ip")public String getIpaddr(HttpServletRequest request) {String ipAddress = request.getHeader("x-forwarded-for");if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {ipAddress = request.getHeader("Proxy-Client-IP");}if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {ipAddress = request.getHeader("WL-Proxy-Client-IP");}if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {ipAddress = request.getRemoteAddr();if (ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")) {//根据网卡取本机配置的IPInetAddress inet = null;try {inet = InetAddress.getLocalHost();} catch (UnknownHostException e) {e.printStackTrace();}ipAddress = inet.getHostAddress();}}//对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割if (ipAddress != null && ipAddress.length() > 15) { //"***.***.***.***".length() = 15if (ipAddress.indexOf(",") > 0) {ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));}}// String header = request.getHeader("user-agent"); 获取用户版本号// System.out.println(header);// String remoteAddr = request.getRemoteAddr();//获取ip//System.out.println(remoteAddr);return ipAddress;}
/*** 获取客户端IP** @param request request* @return 客户端IP*/public static String getIpAddr(HttpServletRequest request) {String ip = request.getHeader("x-forwarded-for");if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {if (ip.contains(",")) {ip = ip.split(",")[0];}}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("Proxy-Client-IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("WL-Proxy-Client-IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("HTTP_CLIENT_IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("HTTP_X_FORWARDED_FOR");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("X-Real-IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getRemoteAddr();}if (StringUtils.isBlank(ip)) {return LOCAL_IPV4;}return ip;}
获取设备信息
private static String pattern = "^Mozilla/\\d\\.\\d\\s+\\(+.+?\\)";private static String pattern2 = "\\(+.+?\\)";private static Pattern r = Pattern.compile(pattern);private static Pattern r2 = Pattern.compile(pattern2);public static String getDeviceInfo(HttpServletRequest request) {String userAgent = request.getHeader("User-Agent");return getDeviceInfo(userAgent);}private static String getDeviceInfo(String userAgent) {Matcher m = r.matcher(userAgent);String result = null;if (m.find()) {result = m.group(0);}Matcher m2 = r2.matcher(result);if (m2.find()) {result = m2.group(0);}result = result.replace("(", "");result = result.replace(")", "");return filterDeviceInfo(result);}public static String filterDeviceInfo(String result) {if (StringUtils.isBlank(result)) {return null;}result = result.replace(" U;", "");result = result.replace(" zh-cn;", "");return result;}
获取客户端IP和设备型号相关推荐
- Linux环境下服务器利用组播来获取客户端IP
Linux环境下服务器利用组播来获取客户端IP 单播是两个主机之间端对端通信(比如TCP.UDP通信),而广播用于一个主机对整个局域网中所有主机的通信.单播和广播是两个极端,要么对一个主机通信,要么对 ...
- c# 获取客户端IP地址方法
客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString(); 客户端主机名: Request.ServerVaria ...
- JS获取客户端IP地址、MAC和主机名的7个方法汇总
今天在搞JS(javascript)获取客户端IP的小程序,上网搜了下,好多在现在的系统和浏览器中的都无效,很无奈,在Chrome.FireFox中很少搞到直接利用ActiveX获取IP等的JS脚本. ...
- 如何在PHP中获取客户端IP地址[重复]
本文翻译自:How to get the client IP address in PHP [duplicate] This question already has an answer here: ...
- ASP.NET Core 中使用负载均衡时获取客户端 IP
在使用负载均衡的情况下,通过 context.Connection.RemoteIpAddress 获取到的是负载均衡的 IP 地址,需要通过 X-Forwarded-For 请求头才能获取到客户端的 ...
- ASP.NET获取客户端IP及MAC地址
ASP.NET获取客户端IP及MAC地址 2008-12-01 14:50 ASP.NET获取客户端IP及MAC地址很多时候非常必要的,像做投票.留言.评论 等系统的时候防止别人恶意操作,导致数据的虚 ...
- JAVA CXF、XFIRE、AXIS webservice获取客户端IP
2019独角兽企业重金招聘Python工程师标准>>> import javax.annotation.Resource; import javax.servlet.http.Htt ...
- 深入分析几种PHP获取客户端IP的情况
深入分析几种PHP获取客户端IP的情况 http://mount.blog.51cto.com/764124/528084 2011-03-27 16:13:29 标签:代理服务器 客户端 文章 PH ...
- openresty开发系列40--nginx+lua实现获取客户端ip所在的国家信息
openresty开发系列40--nginx+lua实现获取客户端ip所在的国家信息 为了实现业务系统针对不同地区IP访问,展示包含不同地区信息的业务交互界面.很多情况下系统需要根据用户访问的IP信息 ...
最新文章
- git安装和使用案例
- linux /etc/hosts.allow和/etc/hosts.deny 限制 禁止 ip连接 黑名单 白名单
- gogs mysql 报错_linux上Docker安装gogs私服亲测(详解)
- office2007安装出现windows installer服务不能更新一个或多个受保护的windows文件
- 15.verilog可综合语句设计综述
- python基础教程:变量的使用
- java 调用dll 方法 postmessage实现后台模拟按键_VB实现模拟键盘及模拟鼠标(后台操作)...
- 以下哪些组件是Oracle,Oracle考试题1参考
- Barefoot和Stordis在欧洲领导开源网络
- Bailian2726 采药【模拟】
- 使用SmartSVN打分支与合并代码
- [2018.10.10 T2] 烯烃
- Matlab图像显示
- ckPlayer播放器嵌入页面时报错CKobject is not defined解决方案
- SpringCloud(part12)Spring OAuth2--案例
- 用ajax+jquery+json+css3+html5实现登录、注册、以及主页面的增删改查
- Q版京剧脸谱来喽——武生
- 基于PCA 人脸识别/人脸识别算法/人脸检测程序源码MATLAB ELM+PCA人脸识别 PCA人脸识别matlab代码 基于PCA算法的人脸识别
- sequoia负载均衡
- 使用VMware测试U盘启动盘是否制作成功
热门文章
- 【个性化推荐系统】简介
- 计算机硬盘驱动器越大,计算机具有驱动器C和驱动器D,但是为什么不驱动器A和驱动器B!您认识经常使用计算机的人吗?...
- 【Gale Shapley 婚姻稳定匹配算法实现】
- “索尼电子在中国”网站的进化(转)
- cad中怎么随意移动图形_CAD中不用移动命令也可以移动图形
- 上位机中RS485与RS232的区别
- 我擅长英语和计算机用英语怎么说,我很擅长英语,用英语怎么说,(擅长于) 用英语有几种表达,列举出来...
- Vue中使用定时器和随机数
- idea 注解制表符_如何在IntelliJ IDEA中使用制表符进行缩进?
- 【Leetcode】1474. Delete N Nodes After M Nodes of a Linked List