C#根据第三方提供的IP查询服务获取公网外网IP地址
C#根据第三方提供的IP查询服务获取公网外网IP地址
C# Code:
/// <summary>
/// C#根据第三方提供的IP查询服务获取公网外网IP地址
/// </summary>
/// <returns></returns>
public static string GetInterNetIPFromAPI()
{
//测试OK, 此接口查询速度最快
var html2 = HttpGetPageHtml("http://www.net.cn/static/customercare/yourip.asp", "gbk");
var ip2 = GetIPFromHtml(html2);
if (!String.IsNullOrEmpty(ip2)) return ip2;
//测试OK
var html1 = HttpGetPageHtml("https://www.ip.cn", "utf-8");
var ip1 = GetIPFromHtml(html1);
if (!String.IsNullOrEmpty(ip1)) return ip1;
//测试失败,不提供查询服务,需要购买api服务
var html3 = HttpGetPageHtml("http://www.ip138.com/ips138.asp", "gbk");
var ip3 = GetIPFromHtml(html3);
if (!String.IsNullOrEmpty(ip3)) return ip3;
return "";
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// C#根据第三方提供的IP查询服务获取公网外网IP地址
/// </summary>
/// <returns></returns>
public static string GetInterNetIPFromAPI()
{
//测试OK, 此接口查询速度最快
var html2 = HttpGetPageHtml("http://www.net.cn/static/customercare/yourip.asp", "gbk");
var ip2 = GetIPFromHtml(html2);
if (!String.IsNullOrEmpty(ip2)) return ip2;
//测试OK
var html1 = HttpGetPageHtml("https://www.ip.cn", "utf-8");
var ip1 = GetIPFromHtml(html1);
if (!String.IsNullOrEmpty(ip1)) return ip1;
//测试失败,不提供查询服务,需要购买api服务
var html3 = HttpGetPageHtml("http://www.ip138.com/ips138.asp", "gbk");
var ip3 = GetIPFromHtml(html3);
if (!String.IsNullOrEmpty(ip3)) return ip3;
return "";
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
C# Code:
/// <summary>
/// 获取页面html
/// </summary>
/// <param name="url">请求的地址</param>
/// <param name="encoding">编码方式</param>
/// <returns></returns>
private static string HttpGetPageHtml(string url, string encoding)
{
string pageHtml = string.Empty;
try
{
using (WebClient MyWebClient = new WebClient())
{
Encoding encode = Encoding.GetEncoding(encoding);
MyWebClient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36");
MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于向Internet资源的请求进行身份验证的网络凭据
Byte[] pageData = MyWebClient.DownloadData(url); //从指定网站下载数据
pageHtml = encode.GetString(pageData);
}
}
catch (Exception e)
{
}
return pageHtml;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// <summary>
/// 获取页面html
/// </summary>
/// <param name="url">请求的地址</param>
/// <param name="encoding">编码方式</param>
/// <returns></returns>
private static string HttpGetPageHtml(string url, string encoding)
{
string pageHtml = string.Empty;
try
{
using (WebClient MyWebClient = new WebClient())
{
Encoding encode = Encoding.GetEncoding(encoding);
MyWebClient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36");
MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于向Internet资源的请求进行身份验证的网络凭据
Byte[] pageData = MyWebClient.DownloadData(url); //从指定网站下载数据
pageHtml = encode.GetString(pageData);
}
}
catch (Exception e)
{
}
return pageHtml;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
C# Code:
/// <summary>
/// 从html中通过正则找到ip信息(只支持ipv4地址)
/// </summary>
/// <param name="pageHtml"></param>
/// <returns></returns>
private static string GetIPFromHtml(String pageHtml)
{
//验证ipv4地址
string reg = @"(?:(?:(25[0-5])|(2[0-4]\d)|((1\d{2})|([1-9]?\d)))\.){3}(?:(25[0-5])|(2[0-4]\d)|((1\d{2})|([1-9]?\d)))";
string ip = "";
Match m = Regex.Match(pageHtml, reg);
if (m.Success)
{
ip = m.Value;
}
return ip;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// <summary>
/// 从html中通过正则找到ip信息(只支持ipv4地址)
/// </summary>
/// <param name="pageHtml"></param>
/// <returns></returns>
private static string GetIPFromHtml(String pageHtml)
{
//验证ipv4地址
string reg = @"(?:(?:(25[0-5])|(2[0-4]\d)|((1\d{2})|([1-9]?\d)))\.){3}(?:(25[0-5])|(2[0-4]\d)|((1\d{2})|([1-9]?\d)))";
string ip = "";
Match m = Regex.Match(pageHtml, reg);
if (m.Success)
{
ip = m.Value;
}
return ip;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761

参考文档:
C#根据本地IP获取MAC地址(Windows API SendARP函数方式)|C/S开发框架
C#网络工具类NetTools,获取IP/MAC地址|C/S开发框架
ASP.NET通过HttpContext获取IP地址
C# 从html中通过正则找到IP地址信息(只支持ipv4地址)
C# 获取宽带连接(PPPOE拨号)的IP地址
C#获取本地的IP地址
C#.NET IP地址工具类WebAPI服务器使用
从HttpRequestMessage对象获取IP地址
WebApi服务器对IP地址黑名单限制
C#.NET IP地址正则表达式验证
C# 更改网卡 IP 地址
C#获取MAC地址包括物理网卡和虚拟网卡|C/S开发框架
.NET C/S架构软件用户授权设计方案(mac地址+白名单用户)|C/S开发框架
喜鹊ERP | 局域网服务器固定IP操作指南|C/S开发框架
百度地图API - 地址标注与位置显示(C#.NET)-C/S开发框架
百度地图API应用 - 根据地址查询经纬度-C/S开发框架
C#根据本地IP获取MAC地址(Windows API SendARP函数方式)|C/S开发框架
C#网络工具类NetTools,获取IP/MAC地址|C/S开发框架
ASP.NET通过HttpContext获取IP地址
C# 从html中通过正则找到IP地址信息(只支持ipv4地址)
C# 获取宽带连接(PPPOE拨号)的IP地址
C#获取本地的IP地址
C#.NET IP地址工具类WebAPI服务器使用
从HttpRequestMessage对象获取IP地址
WebApi服务器对IP地址黑名单限制
C#.NET IP地址正则表达式验证
C# 更改网卡 IP 地址
C#获取MAC地址包括物理网卡和虚拟网卡|C/S开发框架
.NET C/S架构软件用户授权设计方案(mac地址+白名单用户)|C/S开发框架
喜鹊ERP | 局域网服务器固定IP操作指南|C/S开发框架
百度地图API - 地址标注与位置显示(C#.NET)-C/S开发框架
百度地图API应用 - 根据地址查询经纬度-C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
