API之IP地址查詢---權威的IP地址查詢接口集合


原文地址:http://yushine.iteye.com/blog/1717586

推薦實用IP138

http://www.baidu.com/s?wd=IP&rsv_spt=1&issp=1&f=8&rsv_bp=0&ie=utf-8&tn=19045005_9_pg&rsv_enter=1&rsv_sug3=2&rsv_sug4=60&rsv_sug1=1&rsv_sug2=0&inputT=520   百度排行第一

接口如下:更換地址即可

http://opendata.baidu.com/api.php?query=42.196.245.48&co=&resource_id=6006&t=1412300361645&ie=utf8&oe=gbk&cb=op_aladdin_callback&format=json&tn=baidu&cb=jQuery1102026811896078288555_1412299994977&_=1412299994981

 利用SINA接口 C#根據用戶IP地址查詢用戶信息 原文地址:http://www.oschina.net/code/snippet_99259_3399 

----------------------------------------------

因為要做天氣預報這件事,發現搜狐好像沒有一個實時的判斷瀏覽器所在城市的方法——已有的都是把判斷結果放在某定期失效的cookie里,這樣可以減少服務器壓力。

仔細一想就覺得這玩意其實對資源消耗沒有那么大,於是就要求整一個實時的。。。。。然后就覺得該接口也可以給外部開發者調用:http://pv.sohu.com/cityjson

這個接口是給瀏覽器JS來調用的,缺省返回 gbk 編碼的數據;如果你的應用是 UTF-8,加一個參數http://pv.sohu.com/cityjson?ie=utf-8

目前這個接口只是搜狐在用,所以參數很簡單,返回的那個 cid 還很魔幻;如果覺得這個接口確實有幫助,可以把需求發給俺們來繼續改進之

未來也許搜狐會提供給互聯網開發者更多的接口和服務。

BTW:寫這篇blog之前突然想到,中國互聯網應該有類似的接口了吧,一查之下果然 QQ 有一個http://fw.qq.com/ipaddress ,但好像不是官方支持,而且它只有 gbk,哇咔咔

 

=================================================================

各門戶/大型網站IP地址查詢接口: 

騰訊 : http://fw.qq.com/ipaddress 
直接返回本機的IP地址對應的地區,准確度較高。
其實還可以利用騰訊的IP分享計划根據IP地址來獲取更准確的IP地址,詳看教程:http://bbs.pinluo.com/thread-28505-1-1.html 

新浪 :http://counter.sina.com.cn/ip?ip=IP 地址
http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=IP 地址
返回Js數據,感覺不是很精確,可以把問號后面的去掉,直接返回本機對應的IP所在地。

搜狐 :http://pv.sohu.com/cityjson?ie=utf-8 或者http://txt.go.sohu.com/ip/soip 

網易有道 :http://www.youdao.com/smartresult-xml/search.s?type=ip&q=0.0.0.0 
把0.0.0.0換成需查詢的IP地址即可,以下同,這個應該是用純真的數據庫。
(還可查手機號碼)
http://www.youdao.com/smartresult-xml/search.s?type=mobile&q=13888880000 

太平洋電腦網 :http://whois.pconline.com.cn/?ip=0.0.0.0 
把0.0.0.0換成IP地址,頁面上還有其他無關內容。

IP138 :http://www.ip138.com/ips.asp?ip=IP 地址
准確度非常高,IP經常更新。

純真IP數據庫 :http://www.cz88.net/ 

====================================================

我用新浪打開是顯示:1 116.1.204.0 116.1.205.255 中國 廣西 崇左 電信 廣西南寧市電信
用騰訊打開是顯示:var IPData = new Array("116.1.205.88","","廣西","南寧市");
www.ip138.com 打開是顯示:116.1.205.88 本站主數據:廣西自治區南寧市 電信

很明顯,新浪是錯誤的,它IP顯示錯誤,並且將南寧市顯示為崇左市了。這是兩個不同的城市啊!

===========調用方法示例=====================

使用JS代碼進行調取: 

Js代碼 
<script language="javascript" type="text/javascript" src="http://fw.qq.com/ipaddress"></script>     <script>document.write("你的IP是:"+IPData[0]+",來 自:"+IPData[2]);</script>  
<script language="javascript" type="text/javascript" src="http://fw.qq.com/ipaddress"></script> <script>document.write("你的IP是:"+IPData[0]+",來 自:"+IPData[2]);</script> 



使用PHP解析的方法:  

Php代碼 
<?php   function getIpPlace(){    $ip=file_get_contents("http://fw.qq.com/ipaddress");    $ip=str_replace('"',' ',$ip);    $ip2=explode("(",$ip);    $a=substr($ip2[1],0,-2);    $b=explode(",",$a);    return $b;   }   $ip=getIpPlace();   print_r($ip);   ?>  
<?phpfunction getIpPlace(){ $ip=file_get_contents("http://fw.qq.com/ipaddress"); $ip=str_replace('"',' ',$ip); $ip2=explode("(",$ip); $a=substr($ip2[1],0,-2); $b=explode(",",$a); return $b;}$ip=getIpPlace();print_r($ip);?>

 

=============================================================

PHP利用騰訊IP分享計划獲取IP地理位置 騰訊的IP分享計划的查詢接口連接是:http://ip.qq.com/cgi-bin/searchip ,該連接后面會帶有一個get參數searchip1,即searchip1=你要查詢的IP地址。
使用方法是:采用PHP向http://ip.qq.com/cgi-bin/searchip 發送http get request,然后獲取相應,獲得相應結果后,將結果用正則表達式將需要的地理位置信息提取出來就OK了。當然,PHP發送get請求的方法有很多,我用curl來模擬http請求的方法。
Curl 是PHP的一個擴展,進行測試之前,先確認PHP已經加載了curl擴展。打開PHP配置文件php.ini,搜索 “extension=php_curl.dll”,將其前面的分號(;)去掉,然后重啟HTTP服務器,查看phpinfo(),若能看到curl的信 息,說明PHP擴展curl成功。

接下來就簡單了,一段代碼就可以搞定:

/**根據騰訊IP分享計划的地址獲取IP所在地,比較精確 */

function getIPLoc_QQ($queryIP){
    $url = 'http://ip.qq.com/cgi-bin/searchip?searchip1='.$queryIP;
    $ch = curl_init($url);
    curl_setopt($ch,CURLOPT_ENCODING ,'gb2312');
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 獲取數據返回
    $result = curl_exec($ch);
    $result = mb_convert_encoding($result, "utf-8", "gb2312"); // 編碼轉換,否則亂碼
    curl_close($ch);
    preg_match("@<span>(.*)</span></p>@iU",$result,$ipArray);
    $loc = $ipArray[1];
    return $loc;
}

使用getIPLoc_QQ("183.37.209.57")即可得到IP地址所在的地址位置。

騰訊IP分享計划這個網站用的是gb2312編碼,獲取的響應需要用mb_convert_encoding函數進行編碼轉換,否則會有亂碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM