package com.pepper.metrics.integration.servlet.utils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import javax.servlet.http.HttpServletRequest; import java.util.regex.Pattern; /** * Created by zhangrongbin on 2018/9/28. */ public class HttpUtil { private static Pattern numberPattern = Pattern.compile("^/\\d+$"); public static String getUrlWithoutNumber(String uri) { if (StringUtils.isEmpty(uri)) return uri; int lastIndex = uri.lastIndexOf("/"); if(lastIndex >= 0){ String str = uri.substring(lastIndex); if(numberPattern.matcher(str).matches()){ uri = uri.substring(0, lastIndex)+"/number"; } } return uri; } public static void main(String[] args) { System.out.println(getPatternUrl("/666/api/666")); System.out.println(getPatternUrl("/666/777/666")); System.out.println(getPatternUrl("/api/777/news")); System.out.println(getPatternUrl("/")); System.out.println(getPatternUrl("/api/news/$post$appCurVersion=3.3.5.6&exposureTime=0&androidId=7bb2432b55d828f8&imei=868460031387753&userId=94375465&typeId=19&channel=F2qdx360&os=Android/")); System.out.println(getPatternUrl("/dexgp.php/")); System.out.println(getPatternUrl("/phpMyAdmin/scripts/setup.php/")); } private static final String[] IGNORE_POST_FIX = new String[]{".php", ".jpg", ".png", ".jpeng", ".css", ".js", ".jsp"}; public static boolean profilerUrlCheck(String uri) { if (StringUtils.containsAny(uri, IGNORE_POST_FIX)) { return false; } return true; } public static String getPatternUrl(String uri) { if (StringUtils.isEmpty(uri)) return uri; final String[] split = StringUtils.split(uri, '/'); StringBuilder result = new StringBuilder("/"); for (String s : split) { result.append(checkSegment(s) ? "xxx" : s).append("/"); } return result.toString(); } private static boolean checkSegment(String s) { return NumberUtils.isDigits(s) || !StringUtils.isAlphanumeric(s); } public static String getUrlEndpoint(String uri) { return StringUtils.substring(uri, 0, StringUtils.indexOf(uri, '/', 1)); } public static String getClientRealIp(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); 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.getRemoteAddr(); } return ip; } public static String getUserAgent(HttpServletRequest request) { return request.getHeader("user-agent"); } public static String getFullUrl(HttpServletRequest request) { if (StringUtils.isEmpty(request.getQueryString())) { return request.getRequestURI(); } else { return new StringBuilder(request.getRequestURI()).append("?").append(request.getQueryString()).toString(); } } }