asp.net 获取客户端浏览器访问的IP地址的实例代码

本文介绍了asp.net 获取客户端浏览器访问的IP地址的实例代码,分享给大家,自己也留个笔记

1、js方法

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8" />
  <title>Document</title>
  <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
  <script type="text/javascript">
    document.write('IP地址:' + returnCitySN["cip"] + ', 城市编码:' + returnCitySN["cid"] + ', 地区:' + returnCitySN["cname"]);
  </script>
</head>
<body>
</body>
</html> 

2、后台代码实现

#region IP地址限制功能 2017-07-18 

   /// <summary>
   ///
   /// </summary>
   /// <returns></returns>
   public bool IsIPValidate()
   {
     bool flag = false;
     string userip = GetLoginIp();
     string[] addr = GetAddressByIp(userip);
     string addrs = addr[0] + addr[1];
     if ("北京".Equals(addr[0]) || "北京".Equals(addr[1]))
     {
       flag = true;
     }
     return flag;
   } 

   /// <summary>
   /// 获取远程访问用户的Ip地址
   /// </summary>
   /// <returns>返回Ip地址</returns>
   protected string GetLoginIp()
   {
     string loginip = "";
     //Request.ServerVariables[""]--获取服务变量集合
     if (Request.ServerVariables["REMOTE_ADDR"] != null) //判断发出请求的远程主机的ip地址是否为空
     {
       //获取发出请求的远程主机的Ip地址
       loginip = Request.ServerVariables["REMOTE_ADDR"].ToString();
     }
     //判断登记用户是否使用设置代理
     else if (Request.ServerVariables["HTTP_VIA"] != null)
     {
       if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
       {
         //获取代理的服务器Ip地址
         loginip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
       }
       else
       {
         //获取客户端IP
         loginip = Request.UserHostAddress;
       }
     }
     else
     {
       //获取客户端IP
       loginip = Request.UserHostAddress;
     }
     return loginip;
   } 

   /// <summary>
   /// 根据IP获取省市
   /// </summary>
   public string[] GetAddressByIp(string ip)
   {
     string PostUrl = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=" + ip;
     string res = GetDataByPost(PostUrl);//该条请求返回的数据为:res=1t115.193.210.0t115.194.201.255t中国t浙江t杭州t电信
     string[] arr = getAreaInfoList(res);
     return arr;
   } 

   /// <summary>
   /// Post请求数据
   /// </summary>
   /// <param name="url"></param>
   /// <returns></returns>
   public string GetDataByPost(string url)
   {
     HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
     string s = "anything";
     byte[] requestBytes = System.Text.Encoding.ASCII.GetBytes(s);
     req.Method = "POST";
     req.ContentType = "application/x-www-form-urlencoded";
     req.ContentLength = requestBytes.Length;
     Stream requestStream = req.GetRequestStream();
     requestStream.Write(requestBytes, 0, requestBytes.Length);
     requestStream.Close(); 

     HttpWebResponse res = (HttpWebResponse)req.GetResponse();
     StreamReader sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.Default);
     string backstr = sr.ReadToEnd();
     sr.Close();
     res.Close();
     return backstr;
   } 

   /// <summary>
   /// 处理所要的数据
   /// </summary>
   /// <param name="ip"></param>
   /// <returns></returns>
   public static string[] getAreaInfoList(string ipData)
   {
     //1t115.193.210.0t115.194.201.255t中国t浙江t杭州t电信
     string[] areaArr = new string[10];
     string[] newAreaArr = new string[2];
     try
     {
       //取所要的数据,这里只取省市
       areaArr = ipData.Split('t');
       newAreaArr[0] = areaArr[4];//省
       newAreaArr[1] = areaArr[5];//市
     }
     catch (Exception e)
     { 

     }
     return newAreaArr;
   } 

   #endregion 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2017-07-19

Asp.net获取客户端IP常见代码存在的伪造IP问题探讨

在网卡随便一搜: Asp.net 客户端IP 可以搜索到很多页面,提供的代码基本都类似于: 复制代码 代码如下: if (Request.ServerVariables["HTTP_VIA"] != null) return Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(new char[] { ',' })[0]; else return Request.ServerVariables["RE

ASP.NET获取真正的客户端IP地址的6种方法

在ASP中使用 Request.ServerVariables("REMOTE_ADDR") 来取得客户端的IP地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的IP地址,而不是真正的客户端IP地址. 要想透过代理服务器取得客户端的真实IP地址,就要使用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取. 不过要注意的事,并不是每个代理服务器都能用 Request.ServerVariables(

ASP.NET 获取客户端IP方法

话不多说,请看代码: string requestClientIpAddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (string.IsNullOrEmpty(requestClientIpAddress)) requestClientIpAddress = HttpContext.Current.Request.ServerVariables["REMOTE_A

THinkPHP获取客户端IP与IP地址查询的方法

本文实例讲述了THinkPHP获取客户端IP与IP地址查询的方法.分享给大家供大家参考,具体如下: TP 中获取客户端IP地址的系统公共函数是:function get_client_ip().返回值就是IP地址. 查询IP地址所在国家与地区的类文件是IpLocation.class.php,位于ThinkPHP\Lib\ORG\Net目录下.类名是IpLocation,方法是 public function getlocation($ip=''); 省略时查询客户端IP所在地址.返回的是一个数

jsp获取客户端IP地址的方法

本文实例讲述了jsp获取客户端IP地址的方法.分享给大家供大家参考,具体如下: public static String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("X-Forwarded-For"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request

JS获取客户端IP地址、MAC和主机名的7个方法汇总

今天在搞JS(javascript)获取客户端IP的小程序,上网搜了下,好多在现在的系统和浏览器中的都无效,很无奈,在Chrome.FireFox中很少搞到直接利用ActiveX获取IP等的JS脚本.下面的代码是我在所有windowsNT5.0及以上的系统上都测试通过的,给出代码: 一.使用JS获取客户端IP的几个方法 方法一(只针对IE且客户端的IE允许AcitiveX运行,通过平台:XP,SERVER03,2000). 获取客户端IP代码: 复制代码 代码如下: <HTML> <HE

JS简单获取客户端IP地址的方法【调用搜狐接口】

本文实例讲述了JS简单获取客户端IP地址的方法.分享给大家供大家参考,具体如下: <!doctype html> <html> <head> <meta charset="utf-8"> <title>使用搜狐接口获取客户端IP地址</title> </head> <body> <script src="http://pv.sohu.com/cityjson?ie=utf-8

php获取客户端IP及URL的方法示例

本文实例讲述了php获取客户端IP及URL的方法.分享给大家供大家参考,具体如下: function getonlineip(){//获取用户ip if($_SERVER['HTTP_CLIENT_IP']) { $onlineip=$_SERVER['HTTP_CLIENT_IP']; //用户IP } else if($_SERVER['HTTP_X_FORWARDED_FOR']) { $onlineip=$_SERVER['HTTP_X_FORWARDED_FOR']; //代理IP }

JavaScript获取客户端IP的方法(新方法)

很久以来,我都是经过http://fw.qq.com/ipaddress来得到客户端用户的IP,这个方法简单.快速.实用 . 我们调用它的写法是: <script type="text/javascript" src="http://fw.qq.com/ipaddress"></script> 它可以返回用户IP和地点,比喻: var IPData = new Array("220.181.108.85","&q

asp.net获取真实ip的方法

本文实例讲述了asp.net获取真实ip的方法.分享给大家供大家参考.具体如下: public string getip() { string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (null == result || result == String.Empty) { result = HttpContext.Current.Request.ServerVari