C#根据第三方提供的IP查询服务获取公网外网IP地址

  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# 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




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




C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务


版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
发表评论

评论内容
昵称:
关联文章

C#根据提供IP查询服务获取IP地址
C#获取IP
C#获取本地IP地址
C# 获取宽带连接(PPPOE拨号)IP地址
从HttpRequestMessage对象获取IP地址
ASP.NET通过HttpContext获取IP地址
C# 更改网卡 IP 地址
CS开发框架如何做到源代码保密和不被窃取呢?
使用控件都有哪些?控件是否有版权问题?
C# 自动计算字符串值(种方式)
关于购买阿里云ECS服务器提供IP用途
C#.NET IP地址工具类WebAPI服务器使用
这套框架使用那些组件?
WebApi服务端开发框架成功案例-对接支付平台连连支付C#.NET
C#.NET IP地址正则表达式验证
C#获取指定日期时间是当前年度几个季度
更新明细表键-优化方法UpdateDetailKey|C/S框架
花生壳通过远程访问本地SQLServer服务器(原创)
软件开发与设计 - MIS-管理信息系统-微信营销系统(微信平台)
C# 从html中通过正则找到IP地址信息(只支持ipv4地址)