得到真实外网IP、IP所在国家、省份、地区(小偷程序)
更新时间:2011年11月02日 14:33:22 作者:
通过正则抓取IP显示网站中的数据,并筛选出所需要的内容即可。
这种方式效率不算高,如果用在WEB中,如果用得少可以用这种方式,如果常用,还是建议用IP库
#region##得到真实IP以及所在地详细信息
///<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;
}
#endregion
#region##通过IP得到IP所在地省市
///<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];
}
#endregion
#region##获取HTML源码信息
///<summary>
/// 获取HTML源码信息(Porschev)
///</summary>
///<param name="url">获取地址</param>
///<returns>HTML源码</returns>
public string GetHtml(string url)
{
Uri uri = new Uri(url);
WebRequest wr = WebRequest.Create(uri);
Stream s = wr.GetResponse().GetResponseStream();
StreamReader sr = new StreamReader(s, Encoding.Default);
return sr.ReadToEnd();
}
#endregion
复制代码 代码如下:
#region##得到真实IP以及所在地详细信息
///<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;
}
#endregion
#region##通过IP得到IP所在地省市
///<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];
}
#endregion
#region##获取HTML源码信息
///<summary>
/// 获取HTML源码信息(Porschev)
///</summary>
///<param name="url">获取地址</param>
///<returns>HTML源码</returns>
public string GetHtml(string url)
{
Uri uri = new Uri(url);
WebRequest wr = WebRequest.Create(uri);
Stream s = wr.GetResponse().GetResponseStream();
StreamReader sr = new StreamReader(s, Encoding.Default);
return sr.ReadToEnd();
}
#endregion
相关文章
ASP.NET MVC5验证系列之Remote Validation
这篇文章主要为大家详细介绍了ASP.NET MVC5验证系列之Remote Validation,感兴趣的小伙伴们可以参考一下2016-07-07
使用ASP.NET Web API构建Restful API
这篇文章介绍了使用ASP.NET Web API构建Restful API的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-04-04
.NET 6开发TodoList应用之实现ActionFilter
Filter在.NET Web API项目开发中也是很重要的一个概念,它运行在执行MVC响应的Pipeline中执行,允许我们将一些可以在多个Action之间重用的逻辑抽取出来集中管理。本文将详细介绍一下.NET 6如何实现ActionFilter,感兴趣的可以学习一下2021-12-12
asp.net(C#) 动态添加非ASP的标准html控件(如添加Script标签)
在开发程序时,有时需要动态添加标签,而有部分又不是ASP控件,偶然找到这段代码,特收藏。2009-07-07
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
这篇文章主要介绍了.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-06-06


最新评论