`
yushine
  • 浏览: 201355 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

API之IP地址查询---权威的IP地址查询接口集合

 
阅读更多

因为要做天气预报这件事,发现搜狐好像没有一个实时的判断浏览器所在城市的方法——已有的都是把判断结果放在某定期失效的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地址,页面上还有其他无关内容。

IP138http://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函数进行编码转换,否则会有乱码。

分享到:
评论

相关推荐

    基于ASP的IP地址查询工具.zip

    1. **获取IP**:通过Request对象的ServerVariables集合,可以获取到客户端的IP地址,例如`Request.ServerVariables("REMOTE_ADDR")`。 2. **解析IP**:使用第三方库或API(如MaxMind的GeoIP数据库)来解析IP地址,...

    IP库查询IP所在地

    在提供的压缩包中,可能包含了一个或多个这样的API接口,用户可以通过编程语言(如Python、Java、JavaScript等)来调用这些接口,传入IP地址,然后获取返回的地理位置信息。类注释的详细说明对于开发者来说非常重要...

    C#设置IP地址子网掩码默认网关DNS等参数

    在C#中,可以使用`System.Net.NetworkInformation`命名空间下的`IPInterfaceProperties`类来设置或查询网络接口的IP地址。通过`GetIPProperties()`方法获取网络接口的属性,然后使用`UnicastAddresses`属性获取或...

    易语言模块取IP地址.rar

    使用这个模块,开发者可以轻松地在易语言程序中集成IP地址相关的功能,无需深入了解底层的网络协议和API调用。这大大简化了开发过程,提高了代码的可读性和维护性。 在实际应用中,比如开发一个网络监控工具,或者...

    调用api获取IP PBL&DLL

    3. 在函数内部,根据需要调用操作系统或Web服务的API来执行IP地址的查询。 4. 处理返回的结果,可能需要进行错误检查,并将IP地址以适当的形式(如字符串)返回给调用者。 总的来说,这个场景涉及到了使用Progress ...

    通过计算机获取IP地址

    3. **UnicastIPAddressInformationCollection 类**:这是IPInterfaceProperties类的一个属性,表示接口上的所有单播IP地址集合。我们可以通过遍历这个集合来获取IP地址。 以下是一个简单的C#代码示例,展示了如何...

    TCP-IP-Socket-master.zip

    4. **绑定与监听**:服务器端通过bind函数将Socket与特定的IP地址和端口绑定,然后用listen函数设置最大连接队列长度,准备接收客户端的连接请求。 5. **连接与接受**:客户端使用connect函数发起连接请求,服务器...

    商业编程-源码-IPHelper API使用范例.zip

    2. **DNS查询**:支持执行DNS解析,获取主机名对应的IP地址或IP地址对应的主机名。 3. **ARP管理**:可以操作地址解析协议(ARP)表,用于查看或修改本地主机的MAC地址到IP地址的映射。 4. **路由表操作**:允许...

    asp.net 网监IP查询

    在ASP.NET中,可以使用内置的HttpServerVariables集合来获取客户端的IP地址。`Request.ServerVariables("REMOTE_ADDR")` 可以获取到用户的原始IP地址,如果是通过代理服务器访问,则可能需要检查 `X-Forwarded-For` ...

    archive_ caozha-ip(IP地址库调用系统) v1.0.0 [江西新余电信].zip.zip

    2. **调用系统**:这通常意味着提供了一种接口或API,允许其他程序通过请求来获取IP地址的相关信息,例如通过输入IP地址,返回该地址的归属地、网络类型等。 3. **版本1.0.0**:这是软件开发中的一个常见版本标记,...

    Visual C#改变本机IP地址小程序

    要修改IP地址,我们需要使用`IPInterfaceProperties`的`GetIPProperties()`方法获取当前接口的IP属性,然后通过`UnicastAddresses`集合找到要修改的IP地址。接着,我们可以创建一个新的`IPAddress`实例,表示新的IP...

    vb取得本机IP地址列表

    如果函数执行成功,它会遍历返回的适配器信息,将每个适配器的描述(通常包含IP地址)添加到集合中。 最后,在你的主程序中,你可以简单地调用`GetIPList`函数来获取IP地址列表,并将其显示或处理: ```vb Dim ...

    跨平台 获取本机IP/MAC地址,检测是否内网IP,字符串IP转换成Number地址

    跨平台获取本机IP地址通常需要使用操作系统提供的API或者第三方库。在Windows系统中,可以使用Winsock API,而在Linux或Mac OS中,可以利用socket库和`ifconfig`命令。对于Java开发者,可以使用`java.net.Network...

    F5 负载均衡 F5-BIG-IP-LTM-zh

    - **iControl REST API**:允许通过编程接口来自动化管理和配置任务,提高运维效率。 - **报表和分析工具**:提供详细的流量统计和性能指标,帮助识别瓶颈并优化系统性能。 #### 三、应用场景 - **企业级应用**:...

    部分IP地址

    部分IP地址通常指的是IP地址的一部分,可能是整个IP地址的前缀,也可能是后缀,或者某个特定范围的IP地址集合。在网站开发中,部分IP地址可能用于实现特定功能,例如访问控制、数据分析、地理位置追踪等。例如,一个...

    Android获取IP地址.txt

    在探讨如何在Android环境中获取设备的IP地址时,我们首先需要理解几个关键概念:网络接口(NetworkInterface)、IP地址(InetAddress)以及如何通过Java代码在Android应用中安全地执行网络操作。以下是对“Android获取IP...

    批量查询IP归属地

    在IT行业中,网络编程是不可或缺的一部分,而IP地址的管理和查询是网络运维和数据分析的常见需求。本项目是一个基于Java开发的小工具,专门用于批量查询IP地址的归属地信息。这个工具可以帮助用户快速获取大量IP地址...

    .net版ip地址切换器

    总结起来,".NET版IP地址切换器"是一款基于.NET Framework编写的实用工具,它通过操作系统API实现了网络接口的IP地址切换功能。开发者通过熟练运用.NET提供的网络编程接口,结合异步编程和GUI设计,创建了一个便捷...

    爱雪儿IP定位查询系统 v3.0-ASP源码.zip

    爱雪儿IP定位查询系统是一款基于ASP语言开发的应用程序,主要用于获取并解析互联网上用户的IP地址,并根据IP地址进行地理位置的定位。该系统的核心功能是将IP地址转换为对应的地理坐标,包括国家、城市等信息,为...

    读取和修改网卡MAC及IP地址

    综上所述,VB.NET提供了丰富的API用于读取和修改计算机的网络配置,包括MAC和IP地址。然而,修改网络配置应当谨慎,以免破坏网络连接或违反网络安全策略。在开发过程中,理解网络协议和操作系统是如何处理这些配置是...

Global site tag (gtag.js) - Google Analytics