原文地址: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函數進行編碼轉換,否則會有亂碼。