如何快速python判断ip属于网段一个 IP 是否属于中国大陆

如何快速判断一个 IP 是否属于中国大陆_百度知道Dell - 戴尔官方网站 | Dell 中国大陆判断一个IP区间(或IP)是否被另一个IP区间所包含 - 开源中国社区
当前访客身份:游客 [
当前位置:
以下方法实现判断一个IP是否被一个IP区间所包含
有一些静态方法可能引用了同名空间的自定义的类,
至于合并两个相临的IP段,可对其中的最大或最小IP+1
using Susing System.Text.RegularE
mon{&/// &summary&&/// clsMacAndIP 的摘要说明。&/// &/summary&&public class clsIPAddress&{&&private clsIPAddress()&&{&&}
&&#region 判断是否合法 IP
&&/// &summary&&&/// 判断是否合法 IP&&/// &/summary&&&/// &param name=&strIP&&&/param&&&/// &returns&&/returns&&&public static bool ValidateIPAddress(string strIP)&&{&&&if ( null == strIP || && == strIP.Trim() || Convert.IsDBNull(strIP) )&&&&
&&&return Regex.IsMatch(strIP,@&^((/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.){3}(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])$&);&&}
&&#endregion
&&#region 转换成数值
&&/// &summary&&&///& 转换为数值&&/// &/summary&&&/// &param name=&IPAddr&&&/param&&&/// &returns&&/returns&&&public static uint TransNum(string IPAddr)&&{&&&if ( !ValidateIPAddress(IPAddr) )&&&&throw new Exception(&IP Address isn't Well Format!&);
&&&string[] IPStrArray = new string[4];&&&IPStrArray = IPAddr.Split('.');&&&return MAKELONG(MAKEWORD(byte.Parse(IPStrArray[3]),byte.Parse(IPStrArray[2])),MAKEWORD(byte.Parse(IPStrArray[1]),byte.Parse(IPStrArray[0])));&&}
&&#endregion
&&#region 格式化
&&/// &summary&&&/// 格式化&&/// &/summary&&&/// &param name=&IPAddr&&&/param&&&/// &returns&&/returns&&&public static string Format(string IPAddr)&&{&&&if (IPAddr[0] == '.')&&&&IPAddr = &0& + IPA
&&&if (IPAddr[IPAddr.Length - 1] == '.')&&&&IPAddr += &0.0.0.&;&&&else&&&&IPAddr += &.0.0.0.&;
&&&IPAddr = IPAddr.Substring(0,clsString.IndexOf(IPAddr,&.&,4));
//&&&//去掉无用的0//&&&IPAddr = Regex.Replace(IPAddr,&^0{1,2}&,&&);//&&&IPAddr = Regex.Replace(IPAddr,@&/.+0{1,2}&,&.&);
&&&if ( ValidateIPAddress(IPAddr) )&&&&return IPA
&&&return &0.0.0.0&;&&}
&&#endregion
&&#region 比较两个IP的大小
&&/// &summary&&&/// 比较两个IP的大小&&/// &/summary&&&/// &param name=&IP1&&&/param&&&/// &param name=&IP2&&&/param&&&/// &returns&&/returns&&&public static int Compare(string IP1,string IP2)&&{&&&if ( !(ValidateIPAddress(IP1) && ValidateIPAddress(IP2)))&&&&throw new Exception(&IP Address isn't Well Format!&);
&&&uint IPNum1 = TransNum(IP1);&&&uint IPNum2 = TransNum(IP2);
&&&if (IPNum1 == IPNum2 )&&&&return 0;
&&&return IPNum1 & IPNum2 ? 1 : -1 ;&&}
&&#endregion
&&#region 判断一个IP是否包含在指定IP区间内
&&/// &summary&&&/// 判断一个IP是否包含在指定IP区间内&&/// &/summary&&&/// &param name=&IPRegion&&&/param&&&/// &param name=&IP&&&/param&&&/// &returns&&/returns&&&public static bool IsInclude(string[] IPRegion,string IP)&&{&&&//验证&&&if ( null == IPRegion || null == IP || 0 == IPRegion.Length )&&&&
&&&if ( !ValidateIPAddress(IP) )&&&&
&&&if ( 1 == IPRegion.Length )&&&{&&&&if ( !ValidateIPAddress(IPRegion[0]) )&&&&&&&&&&&&&if ( 0 == Compare(IPRegion[0],IP) )&&&&&&&&}
&&&if ( !(ValidateIPAddress(IPRegion[0]) && ValidateIPAddress(IPRegion[1])) )&&&&
&&&uint IPNum = TransNum(IP);&&&uint IPNum1 = TransNum(IPRegion[0]);&&&uint IPNum2 = TransNum(IPRegion[1]);
&&&//比较&&&if ( Math.Min(IPNum1,IPNum2) &= IPNum && Math.Max(IPNum1,IPNum2) &= IPNum )&&&&&&&&&&&&}
&&#endregion
&&#region 判断两个IP区间是否重叠,重叠则返回合并区间,否则返回 NULL
&&/// &summary&&&/// 判断两个IP区间是否重叠,重叠则返回合并区间,否则返回 NULL&&/// &/summary&&&/// &param name=&IPRegion1&&&/param&&&/// &param name=&IPRegion2&&&/param&&&/// &returns&&/returns&&&public static string[] CheckOverlapAndMerge(string[] IPRegion1,string[] IPRegion2)&&{&&&//验证&&&if ( null == IPRegion1 || null == IPRegion2 || 0 == IPRegion1.Length || 0 == IPRegion2.Length )&&&&
&&&//分数组长度进行处理 =1 和 & 1&&&if ( 1 == IPRegion1.Length )&&&{&&&&if (!ValidateIPAddress(IPRegion1[0]))&&&&&throw new Exception(&IP Address isn't Well Format!&);
&&&&if ( 1 == IPRegion2.Length )&&&&{&&&&&if (!ValidateIPAddress(IPRegion2[0]))&&&&&&throw new Exception(&IP Address isn't Well Format!&);&&&&&&&&&&//相等&&&&&if ( Equals(IPRegion1[0],IPRegion2[0]) )&&&&&&return IPRegion1;&&&&}&&&&// & 1&&&&else&&&&{&&&&&if ( !(ValidateIPAddress(IPRegion2[0]) && ValidateIPAddress(IPRegion2[1])) )&&&&&&throw new Exception(&IP Address isn't Well Format!&);&&&&&&&&&&if ( IsInclude(IPRegion2,IPRegion1[0]) )&&&&&&return IPRegion2;&&&&}&&&}&&&// &1&&&else&&&{&&&&if ( !(ValidateIPAddress(IPRegion1[0]) && ValidateIPAddress(IPRegion1[1])) )&&&&&throw new Exception(&IP Address isn't Well Format!&);
&&&&if ( 1 == IPRegion2.Length )&&&&{&&&&&if (!ValidateIPAddress(IPRegion2[0]))&&&&&&throw new Exception(&IP Address isn't Well Format!&);&&&&&&&&&&if ( IsInclude(IPRegion1,IPRegion2[0]) )&&&&&&return IPRegion1;&&&&}&&&&// & 1&&&&else&&&&{&&&&&if ( !(ValidateIPAddress(IPRegion2[0]) && ValidateIPAddress(IPRegion2[1])) )&&&&&&throw new Exception(&IP Address isn't Well Format!&);&&&&&&&&&&uint IPNum1_1 = TransNum(IPRegion1[0]);&&&&&uint IPNum1_2 = TransNum(IPRegion1[1]);&&&&&uint IPNum2_1 = TransNum(IPRegion2[0]);&&&&&uint IPNum2_2 = TransNum(IPRegion2[1]);&&&&&&&&&&#region 大小格式整理 IP[0] &= IP[1]
&&&&&if ( IPNum1_1 & IPNum1_2 )&&&&&{&&&&&&string stemp = IPRegion1[0];&&&&&&IPRegion1[0] = IPRegion1[1];&&&&&&IPRegion1[1] =
&&&&&&uint utemp = IPNum1_1;&&&&&&IPNum1_1 = IPNum1_2;&&&&&&IPNum1_2 =&&&&&}
&&&&&if ( IPNum2_1 & IPNum2_2 )&&&&&{&&&&&&string stemp = IPRegion2[0];&&&&&&IPRegion2[0] = IPRegion2[1];&&&&&&IPRegion2[1] =
&&&&&&uint utemp = IPNum2_1;&&&&&&IPNum2_1 = IPNum2_2;&&&&&&IPNum2_2 =&&&&&}
&&&&&#endregion
&&&&&#region 判断合并
&&&&&//互不包含&&&&&if ( IPNum1_1 & IPNum2_2 || IPNum1_2 & IPNum2_1 )&&&&&&
&&&&&//合并&&&&&string[] result = new string[2];
&&&&&result[0] = IPNum1_1 & IPNum2_1 ? IPRegion1[0] : IPRegion2[0] ;&&&&&result[1] = IPNum1_2 & IPNum2_2 ? IPRegion1[1] : IPRegion2[1] ;
&&&&&#endregion&&&&}
&&#endregion
&&#region 私有方法
&&/// &summary&&&/// 移位转换_8&&/// &/summary&&&/// &param name=&bLow&&&/param&&&/// &param name=&bHigh&&&/param&&&/// &returns&&/returns&&&private static ushort MAKEWORD(byte bLow,byte bHigh)&&{&&&return ((ushort) (((byte) (bLow)) | ((ushort) ((byte) (bHigh))) && 8));&&}
&&/// &summary&&&/// 移位转换_16&&/// &/summary&&&/// &param name=&bLow&&&/param&&&/// &param name=&bHigh&&&/param&&&/// &returns&&/returns&&&private static uint MAKELONG(ushort bLow,ushort bHigh)&&{&&&return ((uint) (((ushort) (bLow)) | ((uint) ((ushort) (bHigh))) && 16)); &&}&&&&#endregion&}}
原文链接:
共有0个评论
更多开发者职位上
有什么技术问题吗?
晨曦之光的其它问题
类似的话题如何判断IP是属于中国国内的IP
[问题点数:100分,结帖人CSDN]
如何判断IP是属于中国国内的IP
[问题点数:100分,结帖人CSDN]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。手动输入指定链接,可用于检查指定链接中是否有反向链接以及在换链接前判定对方是否有欺骗友情链接嫌疑。 注意每行只能输入一个网址。如:
本站nofollow链接过滤:
交叉链接:
附注:友链检测限制检测前100条数据
通过本工具可以批量查询指定网站的友情链接在百度的收录、百度快照、PR以及对方是否链接本站,可以识破骗链接。
1.反向链接:指对方网站上有指向当前查询页面的链接。
2.交叉链接说明:譬如你有网站A投放别人的链接,而别人网站上放的友情链接是你的B站或者C站。那么你在查询网站中输入网址A,同时在交叉链接中输入网址B和C,工具会自动检测对方有没有投放你的站点B或者C。
3.红色部分表示:收录小于50;快照10天未更新;无反链;
4.首页位置说明:显示为 -- 是指没有收录或不在第一页
5.有跳转表示:检测到链接有跳转,跳转后域名有变,检查结果为跳转后的页面。
6.nofollow和external nofollow标签说明:(1)、将"nofollow"写在网页上的meta标签上,用来告诉搜索引擎不要抓取网页上的所有外部链接。(2)、将"nofollow"放在超链接中,告诉搜索引擎不要抓取特定的链接。而rel=’external nofollow’只是更相对于rel=’nofollow’参数更加规范一些。
7.检查模式:精准(检查反链时有www和没www是两个域名)/模糊
8.外链数说明:如显示2/30,30表示对方外链总数,2表示你在对方30个链接中排第二。
9.IP地址:如果您的网站的多个友情链接的IP相同,则搜索引擎可能会认为你的网站在做站群,有可能会对您网站降权。所以交换友情链接的时候,不要跟同一个IP上的多个网站进行交换。
配色/在线汉字

我要回帖

更多关于 神魔大陆2快速升级 的文章

 

随机推荐