日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

利用IP地址查询接口来查询IP归属地

發布時間:2023/12/29 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 利用IP地址查询接口来查询IP归属地 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果我們在項目中需要獲得用戶的地址,而不僅僅是獲得用戶的IP,為了避免在自己的數據庫里添加IP庫,可以直接調用網上的第3方IP地址查詢接口來查詢IP歸屬地。今兒個在網上了解了這些接口,要么返回XML,要么返回直接查詢結果,要么不僅僅返回一個需要的查詢結果,網頁中還有其他不需要的內容。那么如何把這些分析挖掘我需要的查詢結果數據呢?在這里我們一一分析吧。

方法1、針對返回XML文件的接口,進行XML文件的讀取和解析并輸出IP歸屬地節點。

例如有道(yodao)網絡提供的接口就是返回一個xml文件,在IE中輸入網址:http://www.youdao.com/smartresult-xml/search.s?type=ip&q=60.55.46.222,得到如下的XML文件:

[html]view plaincopy

<?xmlversion="1.0"encoding="gbk"?>
-<smartresult>
-<producttype="ip">
<ip>60.55.46.222</ip>
<location>浙江省寧波市電信</location>
</product>
</smartresult>

可以利用.NET的DataSet對象的ReadXml方法傳入XML的URL地址來讀取這個XML文件,最后解析成一個DataTable,我們輸出location這一列就可以了

完整代碼如下:

[csharp]view plaincopy

usingSystem;
usingSystem.Data;

publicpartialclassDefaultOne:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
if(Page.IsPostBack==false)
{
//獲得客戶端IP,因為沒上傳到服務器,因此總是本機地址,127.0.0.1
//stringip=Request.ServerVariables["REMOTE_ADDR"];

stringip="60.55.46.222";

//輸出獲得IP詳細地址方法一
Response.Write(getIpInfoOne(ip));
}
}

///<summary>
///獲得IP詳細地址方法一
///</summary>
///<paramname="ip">ip地址</param>
///<returns>IP詳細地址</returns>
publicstringgetIpInfoOne(stringip)
{
try
{
DataSetds=newDataSet();

//讀取XML數據到DataSet
ds.ReadXml("http://www.youdao.com/smartresult-xml/search.s?type=ip&q="+ip);

//獲得location列的數據
stringipInfo=ds.Tables[0].Rows[0]["location"].ToString();
ipInfo=ipInfo.Replace("","");
returnipInfo;
}
catch
{
return"";
}
}
}

輸出:浙江省寧波市電信

在如下的調試視圖查看下就明白了,把節點product組成一個數據表,3列數據分別是ip,location,type


方法2、針對直接返回IP歸屬地的接口,通過URL下載網頁內容并輸出結果就可以了。

例如太平洋電腦網絡提供的接口就是返回IP歸屬地的查詢結果,在IE中輸入網址:http://whois.pconline.com.cn/ip.jsp?ip=60.55.46.222就直接看到結果這個很方便我們直接下載別人網頁內容,然后把下載到的內容在自己網站里輸出就可以了,而不需要過多的處理。太平洋電腦網絡更多的接口請查看地址:http://whois.pconline.com.cn/

詳細代碼如下:

[csharp]view plaincopy

usingSystem;

usingSystem.Net;

usingSystem.IO;

usingSystem.Text;

publicpartialclassDefaultTwo:System.Web.UI.Page

{

protectedvoidPage_Load(objectsender,EventArgse)

{

if(Page.IsPostBack==false)

{

//獲得客戶端IP,因為沒上傳到服務器,因此總是本機地址,127.0.0.1

//stringip=Request.ServerVariables["REMOTE_ADDR"];

stringip="60.55.46.222";

//輸出獲得IP詳細地址方法二

Response.Write(getIpInfoTwo(ip));

}

}

///<summary>

///獲得IP詳細地址方法二

///</summary>

///<paramname="ip">ip地址</param>

///<returns>IP詳細地址</returns>

publicstringgetIpInfoTwo(stringip)

{

try

{

stringipInfo=GetStrByUrl("http://whois.pconline.com.cn/ip.jsp?ip="+ip,Encoding.Default);

ipInfo=ipInfo.Replace("","");

returnipInfo;

}

catch

{

return"";

}

}

///<summary>

///通過URL下載網頁HTML,返回HTML代碼

///</summary>

///<paramname="url">要下載的網頁的網址</param>

///<paramname="encoding">要下載的網頁的編碼</param>

///<returns>網頁內容</returns>

publicstaticstringGetStrByUrl(stringurl,Encodingencoding)

{

try

{

stringsource="";

WebClientclient=newWebClient();

Streamsr=client.OpenRead(url);

if(sr!=null)

{

StreamReaderstreamr=newStreamReader(sr,encoding);

source=streamr.ReadToEnd();

sr.Close();

streamr.Close();

}

returnsource.Replace("\n","").Replace("\t","").Replace("\r","");

}

catch(System.InvalidOperationExceptionex)

{

return"";

//throwex;

}

}

}

輸出:浙江省寧波市聯通
方法3、針對不僅僅返回一個需要的查詢結果,網頁中還有其他不需要的內容,通過URL下載網頁內容并進行數據挖掘。

例如:hao123.com的網站里所鏈接的IP查詢接口,就是ip138.com查詢網的查詢頁面,在IE中輸入網址:http://ip.138ip.cn/ip/60.55.46.222,看到的查詢結果發現里面有很多內容,如下圖所示,

此時我們需要首先通過URL下載網頁HTML內容,然后過濾掉不需要的HTML標簽,最后挖掘出【所在地:】和【在這個IP上的站點】這兩個字符串中的內容就可以了,詳細代碼如下:

[csharp]view plaincopy

usingSystem;

usingSystem.Net;

usingSystem.IO;

usingSystem.Text;

usingSystem.Text.RegularExpressions;

publicpartialclassDefaultThree:System.Web.UI.Page

{

protectedvoidPage_Load(objectsender,EventArgse)

{

if(Page.IsPostBack==false)

{

//獲得客戶端IP,因為沒上傳到服務器,因此總是本機地址,127.0.0.1

//stringip=Request.ServerVariables["REMOTE_ADDR"];

stringip="60.55.46.222";

//輸出獲得IP詳細地址方法三

Response.Write(getIpInfoThree(ip));

}

}

///<summary>

///獲得IP詳細地址方法三

///</summary>

///<paramname="ip">ip地址</param>

///<returns>IP詳細地址</returns>

publicstringgetIpInfoThree(stringip)

{

try

{

stringipInfo=GetStrByUrl("http://ip.138ip.cn/ip/"+ip,Encoding.UTF8);

//過濾字符串中的HTML標記

ipInfo=RepalceHTML(ipInfo);

intbegin=ipInfo.LastIndexOf("所在地:");

intend=ipInfo.IndexOf("在這個IP上的站點");

//截取有用字符串,過濾無用字符串

ipInfo=ipInfo.Substring(begin,end-begin).Replace("","").Replace("所在地:","");

returnipInfo;

}

catch

{

return"";

}

}

///<summary>

///去掉字符串中的HTML標記

///</summary>

///<paramname="source"></param>

///<returns></returns>

publicstaticstringRepalceHTML(stringsource)

{

source=Regex.Replace(source,"<(\\s|\\S)+?>","",RegexOptions.IgnoreCase);

returnsource;

}

///<summary>

///通過URL下載網頁HTML,返回HTML代碼

///</summary>

///<paramname="url">要下載的網頁的網址</param>

///<paramname="encoding">要下載的網頁的編碼</param>

///<returns>網頁內容</returns>

publicstaticstringGetStrByUrl(stringurl,Encodingencoding)

{

try

{

stringsource="";

WebClientclient=newWebClient();

Streamsr=client.OpenRead(url);

if(sr!=null)

{

StreamReaderstreamr=newStreamReader(sr,encoding);

source=streamr.ReadToEnd();

sr.Close();

streamr.Close();

}

returnsource.Replace("\n","").Replace("\t","").Replace("\r","");

}

catch(System.InvalidOperationExceptionex)

{

return"";

//throwex;

}

}

}

輸出:浙江省寧波市電信

通過上面三種方式查詢的結果,有道網絡,ip138網絡都是浙江省寧波市電信,而太平洋電腦網絡是浙江省寧波市聯通,因此網上提供的查詢結果只是作為個參考。

總結

以上是生活随笔為你收集整理的利用IP地址查询接口来查询IP归属地的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。