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

자바 접속자 브라우저 정보와 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;
}

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



이 글을 공유하기

댓글

Designed by JB FACTORY