본문 바로가기
JAVA

사용자 브라우저 정보와 IP 정보 얻어오기

by 쑝스토리 2018. 9. 13.
반응형

자바 접속자 브라우저 정보와 IP 정보 얻어오기


웹사이트를 관리하다보면, 웹로그를 기록해야 되는 경우가 많습니다. 사용자에 대한 추적을 하기 위해서죠. 자바에서 제공하는 HttpRequest.UserAgent Property 를 통하여 접속 사용자의 브라우저 정보를 얻을 수 있습니다.  저는 인터셉터에서 처리하였으며, 사용자의 브라우저 정보 및 아이피등의 웹로그를 얻기 위해 구현 하였습니다. 서블릿을 따로 만들어 필요할때마다 요청하여 사용중입니다. 

getHeader 를 통하여  User-Agent 에서 얻어온 값을 출력해 보면 상당히 긴 구문을 출력해 옵니다. 브라우저에 대한 상세정보인데요.

저희는 이것을 indexof 를 이용하여, 각 브라우저의 특정 문자열을 찾아서 맞으면 그 결과값을 저장하여 브라우저 정보를 얻어올껍니다.


예를 들어 아이폰 User-Agnet 출력문

Mozilla/5.0 (iPod; U; CPU iPhone OS 3_1_3 like Mac OS X; ko-kr) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7E18 Safari/528.16


사용자 브라우저 구하기

       // 사용자 브라우저 구하기
	protected String getBrowserInfo(HttpServletRequest req, String browser) {
		try {
			String browserInfo = req.getHeader("User-Agent"); // 사용자 User-Agent 값 얻기
			
			if (browserInfo != null) {
				if (browserInfo.indexOf("Trident") > -1) {
					browser = "MSIE";
				} else if (browserInfo.indexOf("Chrome") > -1) {
					browser = "Chrome";
				} else if (browserInfo.indexOf("Opera") > -1) {
					browser = "Opera";
				} else if (browserInfo.indexOf("iPhone") > -1
						&& browserInfo.indexOf("Mobile") > -1) {
					browser = "iPhone";
				} else if (browserInfo.indexOf("Android") > -1
						&& browserInfo.indexOf("Mobile") > -1) {
					browser = "Android";
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return browser;
	}

이렇게 하면 각 사용자의 브라우저 화면정보를 가져올수 있습니다. 이제 사용자 IP를 구하는 서블릿을 구현해 보겠습니다. 이것도 마찬가지로  HttpServletRequest Header 에서 정보를 얻어 올수 있습니다.


사용자 IP 정보 구하기

// 사용자 IP 구하기
protected String getLocalServerIp(HttpServletRequest req, String reg_ip) {
	try {
		String clientIp = req.getHeader("HTTP_X_FORWARDED_FOR");
		if (null == clientIp || clientIp.length() == 0
				|| clientIp.toLowerCase().equals("unknown")) {
			reg_ip = req.getHeader("REMOTE_ADDR");
		}
		if (null == clientIp || clientIp.length() == 0
				|| clientIp.toLowerCase().equals("unknown")) {
			reg_ip = req.getRemoteAddr();
		}
	} catch (Exception e) {

	}
	return reg_ip;
}

테스트 해보시고 이상 있으면 댓글 남겨주세요. 



반응형