asp获取IP是错误的

来源:百度知道 编辑:UC知道 时间:2024/06/17 21:40:37
网上这段ASP获取IP的代码,得到的并不是我的实际IP与IP138不一样,自己进入路由器,看到获取的IP与IP138的一样。与自己的asp获取的不一样。这种为什么呢?如何才能像IP138获取正确的IP。
代码如下:
<%
Private Function getIP()
Dim strIPAddr
If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then
strIPAddr = Request.ServerVariables("REMOTE_ADDR")
ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then
strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1)
ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then
strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1)
Else
strIPAddr = Req

dim backgroundip, directip
backgroundip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
directip = Request.ServerVariables("REMOTE_ADDR")

if backgroundip = "" then
response.Write("<p>您没有使用代理上网。</p><p>您的 IP 是:" & directip & "</p>")
else
response.Write("<p>您使用的是代理上网。</p><p>您的代理 IP 是:" & directip & "。</p><p>您的真实 IP 是:" & backgroundip & "</p>")
end if

Request.ServerVariables("Remote_Addr")

内外和外网的ip不一样,如果有几层代理这些获取的ip也不一样,看你想获取的是哪一ip,网上可以找到解决方案。

IP138获取的是外网IP,你获得的是内网IP。给你个外网IP的JS函数
static string netIP()
{
Uri uri = new Uri("http://www.ikaka.com/ip/index.asp");//查本机网络IP的网页
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
req.M