| | |
| | | import java.io.BufferedReader; |
| | | import java.io.InputStream; |
| | | import java.io.InputStreamReader; |
| | | import java.net.HttpURLConnection; |
| | | import java.net.InetAddress; |
| | | import java.net.NetworkInterface; |
| | | import java.net.URL; |
| | | import java.net.*; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.Enumeration; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | |
| | | * 获取IP地址: |
| | | */ |
| | | public static String getIpAddress(HttpServletRequest request) { |
| | | String ipAddress = null; |
| | | try { |
| | | ipAddress = request.getHeader("X-Forwarded-For"); |
| | | if (ipAddress != null && ipAddress.length() != 0 && !"unknown".equalsIgnoreCase(ipAddress)) { |
| | | // 多次反向代理后会有多个ip值,第一个ip才是真实ip |
| | | if (ipAddress.contains(",")) { |
| | | ipAddress = ipAddress.split(",")[0]; |
| | | } |
| | | } |
| | | 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.getHeader("HTTP_CLIENT_IP"); |
| | | } |
| | | if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { |
| | | ipAddress = request.getRemoteAddr(); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("获取IP地址异常,{}", e.getMessage()); |
| | | // 获取客户端真实 IP 地址 |
| | | String ipAddress = request.getHeader("X-Forwarded-For"); |
| | | |
| | | if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) { |
| | | ipAddress = request.getHeader("Proxy-Client-IP"); |
| | | } |
| | | |
| | | if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) { |
| | | ipAddress = request.getHeader("WL-Proxy-Client-IP"); |
| | | } |
| | | |
| | | if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) { |
| | | ipAddress = request.getRemoteAddr(); |
| | | } |
| | | |
| | | return ipAddress; |
| | | } |
| | | |
| | |
| | | |
| | | public static void main(String[] args) { |
| | | |
| | | String ip = "183.162.252.0";// 国内IP |
| | | String abroadIp = "48.119.248.100"; // 国外IP |
| | | String ip = "26.26.26.1";// 国内IP |
| | | String abroadIp = "26.26.26.1"; // 国外IP |
| | | |
| | | System.out.println("方法一(国内):" + getIpPossessionByFile(ip)); |
| | | System.out.println("方法二(国内):" + getCityInfoByVectorIndex(ip)); |