IPに基づいて省市を取得する.

8341 ワード

public class IPAddress

    {

        /// <summary>       

        ///  IP (Porschev)       

        /// </summary>       

        /// <returns></returns>       

        public string GetIpDetails()

        {

            string url = "http://www.ip138.com/ips8.asp";   // IP          

            string regStr = "(?<=<td\\s*align=\\\"center\\\">)[^<]*?(?=<br/><br/></td>)";

            string ipRegStr = "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)";    //IP                   

            string ip = string.Empty;   //IP            

            string country = string.Empty;  //            

            string adr = string.Empty;   //            

            string html = GetHtml(url);       //            

            Regex reg = new Regex(regStr, RegexOptions.None);

            Match ma = reg.Match(html); html = ma.Value;

            Regex ipReg = new Regex(ipRegStr, RegexOptions.None);

            ma = ipReg.Match(html);

            ip = ma.Value;     // IP           

            int index = html.LastIndexOf("") + 1;

            country = html.Substring(index);                   //            

            adr = GetAdrByIp(ip);

            return "IP:" + ip + "" + country + "" + adr;

        }

        /// <summary>       

        ///  IP IP (Porschev)       

        /// </summary>       

        /// <param name="ip"></param>       

        /// <returns></returns>       

        public string GetAdrByIp(string ip)

        {

            string url = "http://www.cz88.net/ip/?ip=" + ip;

            string regStr = "(?<=<span\\s*id=\\\"cz_addr\\\">).*?(?=</span>)";

            string html = GetHtml(url);       //            

            Regex reg = new Regex(regStr, RegexOptions.None);

            Match ma = reg.Match(html);

            html = ma.Value;

            string[] arr = html.Split(' ');

            return arr[0];

        }



     

        /// <summary>       

        ///  HTML (Porschev)       

        /// </summary>       

        /// <param name="url"> </param>       

        /// <returns>HTML </returns>       

        public string GetHtml(string url)

        {

            string str = "";

            try

            {

                Uri uri = new Uri(url);

                WebRequest wr = WebRequest.Create(uri);

                Stream s = wr.GetResponse().GetResponseStream();

                StreamReader sr = new StreamReader(s, Encoding.Default);

                str = sr.ReadToEnd();

            }

            catch (Exception e)

            {

            }

            return str;

        }

    }