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

简介: 1、js方法 Document document.

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

相关文章
|
2月前
|
编解码 缓存 安全
用指纹浏览器为什么要搭配代理IP
指纹浏览器结合代理IP能有效提升网络隐私与安全。指纹浏览器通过生成独特用户标识防止追踪,但高级追踪技术仍可能暴露信息。代理IP可隐藏真实IP,增加匿名性,规避网络限制,并在指纹检测中混淆身份,增强安全。代理IP还能加速网络访问并提高稳定性。然而,选择可靠代理IP服务并遵守法规至关重要。
|
8月前
|
Linux Android开发 iOS开发
基于.Net开发的ChatGPT客户端,兼容Windows、IOS、安卓、MacOS、Linux
基于.Net开发的ChatGPT客户端,兼容Windows、IOS、安卓、MacOS、Linux
128 0
|
22天前
|
域名解析 存储 缓存
HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口
【6月更文挑战第23天】 HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口;TCP连接(HTTP/1.1可能需排队);三次握手;发送请求头与体;服务器处理并返回响应;TCP连接可能关闭或保持;浏览器接收并显示响应,更新缓存。HTTP版本间有差异。
33 5
|
1月前
更换了浏览器http代理ip使用不了的原因是什么
在互联网广泛应用的当下,http动态代理ip在各种业务中需求增加。然而,遇到更换浏览器http代理ip后无法使用的情况,可能由以下原因导致:1)ip稳定性差,导致网速过慢;2)ip已失效,提取后未及时使用会过期;3)ip纯净度低,免费代理ip质量通常不佳;4)并发量小,多个用户共享同一ip导致性能下降。为解决问题,用户需注意ip稳定性和时效性,选择高质量代理服务,并考虑并发使用情况。
56 1
更换了浏览器http代理ip使用不了的原因是什么
|
10天前
|
Web App开发
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
|
1月前
|
NoSQL 大数据 Redis
分享5款.NET开源免费的Redis客户端组件库
分享5款.NET开源免费的Redis客户端组件库
|
2月前
|
JSON 编解码 Go
Golang深入浅出之-HTTP客户端编程:使用net/http包发起请求
【4月更文挑战第25天】Go语言`net/http`包提供HTTP客户端和服务器功能,简化高性能网络应用开发。本文探讨如何发起HTTP请求,常见问题及解决策略。示例展示GET和POST请求的实现。注意响应体关闭、错误处理、内容类型设置、超时管理和并发控制。最佳实践包括重用`http.Client`,使用`context.Context`,处理JSON以及记录错误日志。通过实践这些技巧,提升HTTP编程技能。
40 1
|
2月前
|
Go 开发者
Golang深入浅出之-HTTP客户端编程:使用net/http包发起请求
【4月更文挑战第24天】Go语言的`net/http`包在HTTP客户端编程中扮演重要角色,但使用时需注意几个常见问题:1) 检查HTTP状态码以确保请求成功;2) 记得关闭响应体以防止资源泄漏;3) 设置超时限制,避免长时间等待;4) 根据需求处理重定向。理解这些细节能提升HTTP客户端编程的效率和质量。
30 1
|
2月前
|
前端开发
.net core mvc获取IP地址和IP所在地(其实是百度的)
.net core mvc获取IP地址和IP所在地(其实是百度的)
138 0
|
8月前
|
缓存 NoSQL 大数据
4款.NET开源的Redis客户端驱动库
4款.NET开源的Redis客户端驱动库