c# 获取客户端IP地址方法

时间:2025-03-01 06:58:37

客户端ip: 

("Remote_Addr").ToString(); 

客户端主机名:

("Remote_Host").ToString(); 

客户端浏览器IE:

客户端浏览器 版本号:

;//

客户端操作系统:

服务器ip: 

("Local_Addr").ToString(); 

服务器名:

("Server_Name").ToString();

如果你想进一步了解ServerVariables,可以用

foreach(String o in ){ 
  (o+"="+[o]+"<br>"); 

获取客户端IP方法

 public string GetIP()
     {
         string uip = "";
         if (["HTTP_VIA"] != null)
         {
             uip = ["HTTP_X_FORWARDED_FOR"].ToString();
         }
         else
         {
             uip = ["REMOTE_ADDR"].ToString();
         }
         return uip;
     }

C# ServerVariables参数说明

["Url"] 
返回服务器地址

["Path_Info"] 
客户端提供的路径信息

["Appl_Physical_Path"] 
与应用程序元数据库路径相应的物理路径

["Path_Translated"] 
通过由虚拟至物理的映射后得到的路径

["Script_Name"] 
执行脚本的名称

["Query_String"] 
查询字符串內容

["Http_Referer"] 
请求的字符串內容

["Server_Port"] 
接受请求的服务器端口号

["Remote_Addr"] 
发出请求的远程主机的IP地址

["Remote_Host"] 
发出请求的远程主机名称

["Local_Addr"] 
返回接受请求的服务器地址

["Http_Host"] 
返回服务器地址

["Server_Name"] 
服务器的主机名、DNS地址或IP地址

["Request_Method"] 
提出请求的方法比如GET、HEAD、POST等等

["Server_Port_Secure"]
如果接受请求的服务器端口为安全端口时,则为1,否则为0

["Server_Protocol"]
服务器使用的协议的名称和版本

["Server_Software"]
应答请求并运行网关的服务器软件的名称和版本

["All_Http"]
客户端发送的所有HTTP标头,前缀HTTP_

["All_Raw"]
客户端发送的所有HTTP标头,其结果和客户端发送时一样,没有前缀HTTP_

["Appl_MD_Path"]
应用程序的元数据库路径

["Content_Length"]
客户端发出內容的长度

["Https"]
如果请求穿过安全通道(SSL),则返回ON如果请求来自非安全通道,则返回OFF

["Instance_ID"]
IIS实例的ID号

["Instance_Meta_Path"]
响应请求的IIS实例的元数据库路径

["Http_Accept_Encoding"]
返回內容如:gzip,deflate

["Http_Accept_Language"]
返回內容如:en-us

["Http_Connection"]
返回內容:Keep-Alive

["Http_Cookie"]
返回內容如:nVisiT%

2DYum=125;ASPSESSIONIDCARTQTRA=FDOBFFABJGOECBBKHKGPFIJI;ASPSESSIONIDCAQQTSRB=LKJJPLABABILLPCOGJGAMKAM;ASPSESSIONIDACRRSSRA=DK

HHHFBBJOJCCONPPHLKGHPB

["Http_User_Agent"]
返回內容:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)

["Https_Keysize"]
安全套接字层连接关键字的位数,如128

["Https_Secretkeysize"]
服务器验证私人关键字的位数如1024

["Https_Server_Issuer"]
服务器证书的发行者字段

["Https_Server_Subject"]
服务器证书的主题字段

["Auth_Password"]
当使用基本验证模式时,客户在密码对话框中输入的密码

["Auth_Type"]
是用户访问受保护的脚本时,服务器用於检验用户的验证方法

["Auth_User"]
代证的用户名

["Cert_Cookie"]
唯一的客户证书ID号

["Cert_Flag"]
客户证书标誌,如有客户端证书,则bit0为0如果客户端证书验证无效,bit1被设置为1

["Cert_Issuer"]
用户证书中的发行者字段

["Cert_Keysize"]
安全套接字层连接关键字的位数,如128

["Cert_Secretkeysize"]
服务器验证私人关键字的位数如1024

["Cert_Serialnumber"]
客户证书的序列号字段

["Cert_Server_Issuer"]
服务器证书的发行者字段

["Cert_Server_Subject"]
服务器证书的主题字段

["Cert_Subject"]
客户端证书的主题字段

["Content_Type"]
客户发送的form內容或HTTPPUT的数据类型

["HTTP_X_FORWARDED_FOR"] 
可以获得位于代理(网关)后面的直接IP,当然必须这个代理支持


一些被隐藏起来的参数:
["NUMBER_OF_PROCESSORS"]
["OS"]
["WINDIR"]
["TEMP"]
["TMP"]
["ComSpec"]
["Os2LibPath"]
["Path"]
["PATHEXT"]
["PROCESSOR_ARCHITECTURE"]
["PROCESSOR_IDENTIFIER"]
["PROCESSOR_LEVEL"]
["PROCESSOR_REVISION"]


本机ip:<%=["remote_addr"]%>


服务器名:<%=["SERVER_NAME"]%>


服务器IP:<%=["LOCAL_ADDR"]%>


服务器端口:<%=["SERVER_PORT"]%>


服务器时间:<%=now%>


IIS版本:<%=["SERVER_SOFTWARE"]%>


脚本超时时间:<%=%>


本文件路径:<%=(["SCRIPT_NAME"])%>


服务器CPU数量:<%=["NUMBER_OF_PROCESSORS"]%>


服务器解译引擎:<%=ScriptEngine & "/"& ScriptEngineMajorVersion&"."&ScriptEngineMinorVersion&"."& ScriptEngineBuildVersion %>


服务器操作系统:<%=["OS"]%>


支持的文件类型:<%=["HTTP_Accept"]%>


访问的文件路径:<%=["HTTP_url"]%>


用户代理的信息:<%=["HTTP_USER_AGENT"]%>

变量意义. http代理相关知识
["HTTP_VIA"]---------可以获得用户内部的ip
["HTTP_X_FORWARDED_FOR"]---------可以知道代理服务器的服务器名以及端口
["REMOTE_ADDR"]-- 发出请求的远程主机的 IP 地址。

http代理相关知识
关键就在HTTP_X_FORWARDED_FOR
使用不同种类代理服务器,上面的信息会有所不同:

一、没有使用代理服务器的情况:
REMOTE_ADDR = 您的 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示

二、使用透明代理服务器的情况:Transparent Proxies
REMOTE_ADDR = 代理服务器 IP 
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 您的真实 IP
这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。

三、使用普通匿名代理服务器的情况:Anonymous Proxies
REMOTE_ADDR = 代理服务器 IP 
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 代理服务器 IP
隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。

四、使用欺骗性代理服务器的情况:Distorting Proxies
REMOTE_ADDR = 代理服务器 IP 
HTTP_VIA = 代理服务器 IP 
HTTP_X_FORWARDED_FOR = 随机的 IP
告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。

五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)
REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示