웹 방문자 IP 획득하기;운영 체제 버전브라우저 버전

1. 웹 방문자의 IP 주소를 얻는 코드는 다음과 같습니다.
IP:
<% =Request.ServerVariables("REMOTE_ADDR") %>

둘째, 운영 체제 버전의 코드는 다음과 같습니다.

<% response.Write operationsystem & "<br>" & browser
function operationsystem() '      
agent = Request.ServerVariables("HTTP_USER_AGENT")
if Instr(agent,"NT 5.2")>0 then
SystemVer="Windows Server 2003"
elseif Instr(agent,"NT 5.1")>0 then
SystemVer="Windows XP"
elseif Instr(agent,"NT 5")>0 then
SystemVer="Windows 2000"
elseif Instr(agent,"NT 4")>0 then
SystemVer="Windows NT4"
elseif Instr(agent,"4.9")>0 then
SystemVer="Windows ME"
elseif Instr(agent,"98")>0 then
SystemVer="Windows 98"
elseif Instr(agent,"95")>0 then
SystemVer="Windows 95"

else
SystemVer="   "
end if
operationsystem="       : " & SystemVer
end function %>

셋째, 브라우저 버전의 코드는 다음과 같습니다.

<% function browser() '     
agent = Request.ServerVariables("HTTP_USER_AGENT")
if Instr(agent,"MSIE 6.0")>0 then
browserVer="Internet Explorer 6.0"
elseif Instr(agent,"MSIE 5.5")>0 then
browserVer="Internet Explorer 5.5"
elseif Instr(agent,"MSIE 5.01")>0 then
browserVer="Internet Explorer 5.01"
elseif Instr(agent,"MSIE 5.0")>0 then
browserVer="Internet Explorer 5.00"
elseif Instr(agent,"MSIE 4.0")>0 then
browserVer="Internet Explorer 4.0"
else
browserVer="  "
end if
browser="       : " & browserVer
if Instr(agent,"TencentTraveler")>0 then '          TT
browser=browser&" |     TencentTraveler"
end if
end function %> 

ps:
JSP에서 클라이언트의 IP 주소를 가져오는 요령은 Request입니다.getRemoteAddr (), 대부분의 경우 이 요령이 유효합니다.그러나 아파치, Squid 등 리버스 프록시 소프트웨어를 통과하면 클라이언트의 실제 IP 주소를 얻을 수 없습니다.만약 역방향 프록시 소프트웨어를 운용했다면, Request를 사용하십시오.getRemoteAddr () 요령이 가져온 IP 주소는 클라이언트의 실제 IP가 아닌 127.0.0.1 또는 192.168.1.110입니다.
프록시를 거친 후 클라이언트와 서비스 사이에 중간층을 추가했기 때문에 서버는 클라이언트의 IP를 직접 받을 수 없고 서버 측이 사용하거나 전송 요청의 주소를 통해 클라이언트에게 직접 되돌려줄 수 없다.그러나 전송 요청의 HTTP 헤더 정보에는 X-FORWARDED-FOR 정보가 추가되었습니다.를 사용하여 기존 클라이언트 IP 주소와 원래 클라이언트가 요청한 서버 주소를 추적합니다.index에 방문하면jsp/시, 사실 우리 리더가 서버에 있는 index에 실제로 접근한 것은 아닙니다.jsp 파일이 아니라 프록시 서버에서 index에 접근합니다.jsp, 프록시 서버는 index에 프록시 서버가 접근하기 때문에 접근한 결과를 리더에게 되돌려줍니다.jsp의, 그래서 index.jsp에서 Request를 통해getRemoteAddr () 의 요령이 가져온 IP는 사실상 프록시 서버의 주소이며 클라이언트의 IP 주소가 아닙니다.
따라서 클라이언트의 실제 IP 주소를 얻을 수 있는 요령 1을 얻을 수 있습니다.

public String getRemortIP(HttpServletRequest request) { 
    if (request.getHeader("x-forwarded-for") == null) { 
        return request.getRemoteAddr(); 
    } 
    return request.getHeader("x-forwarded-for"); 
}  

클라이언트의 실제 IP 주소를 확보하는 요령 2:

public String getIpAddr(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; 
}  

그러나 만약에 다중 역방향 에이전트를 통과했다면 X-Forwarded-For의 값은 하나가 아니라 일련의 IP 값이다. 도대체 어느 것이 실제 사용자 측의 실제 IP일까?
정답은 X-Forwarded-For에서 첫 번째 unknown이 아닌 유효한 IP 문자열을 뽑는 것이다.예:
X-Forwarded- For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100
사용자 실제 IP: 192.168.1.110

좋은 웹페이지 즐겨찾기