因为要做天气预报这件事,发现搜狐好像没有一个实时的判断浏览器所在城市的方法——已有的都是把判断结果放在某定期失效的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函数进行编码转换,否则会有乱码。
分享到:
相关推荐
1. **获取IP**:通过Request对象的ServerVariables集合,可以获取到客户端的IP地址,例如`Request.ServerVariables("REMOTE_ADDR")`。 2. **解析IP**:使用第三方库或API(如MaxMind的GeoIP数据库)来解析IP地址,...
在提供的压缩包中,可能包含了一个或多个这样的API接口,用户可以通过编程语言(如Python、Java、JavaScript等)来调用这些接口,传入IP地址,然后获取返回的地理位置信息。类注释的详细说明对于开发者来说非常重要...
在C#中,可以使用`System.Net.NetworkInformation`命名空间下的`IPInterfaceProperties`类来设置或查询网络接口的IP地址。通过`GetIPProperties()`方法获取网络接口的属性,然后使用`UnicastAddresses`属性获取或...
使用这个模块,开发者可以轻松地在易语言程序中集成IP地址相关的功能,无需深入了解底层的网络协议和API调用。这大大简化了开发过程,提高了代码的可读性和维护性。 在实际应用中,比如开发一个网络监控工具,或者...
3. 在函数内部,根据需要调用操作系统或Web服务的API来执行IP地址的查询。 4. 处理返回的结果,可能需要进行错误检查,并将IP地址以适当的形式(如字符串)返回给调用者。 总的来说,这个场景涉及到了使用Progress ...
3. **UnicastIPAddressInformationCollection 类**:这是IPInterfaceProperties类的一个属性,表示接口上的所有单播IP地址集合。我们可以通过遍历这个集合来获取IP地址。 以下是一个简单的C#代码示例,展示了如何...
4. **绑定与监听**:服务器端通过bind函数将Socket与特定的IP地址和端口绑定,然后用listen函数设置最大连接队列长度,准备接收客户端的连接请求。 5. **连接与接受**:客户端使用connect函数发起连接请求,服务器...
2. **DNS查询**:支持执行DNS解析,获取主机名对应的IP地址或IP地址对应的主机名。 3. **ARP管理**:可以操作地址解析协议(ARP)表,用于查看或修改本地主机的MAC地址到IP地址的映射。 4. **路由表操作**:允许...
在ASP.NET中,可以使用内置的HttpServerVariables集合来获取客户端的IP地址。`Request.ServerVariables("REMOTE_ADDR")` 可以获取到用户的原始IP地址,如果是通过代理服务器访问,则可能需要检查 `X-Forwarded-For` ...
2. **调用系统**:这通常意味着提供了一种接口或API,允许其他程序通过请求来获取IP地址的相关信息,例如通过输入IP地址,返回该地址的归属地、网络类型等。 3. **版本1.0.0**:这是软件开发中的一个常见版本标记,...
要修改IP地址,我们需要使用`IPInterfaceProperties`的`GetIPProperties()`方法获取当前接口的IP属性,然后通过`UnicastAddresses`集合找到要修改的IP地址。接着,我们可以创建一个新的`IPAddress`实例,表示新的IP...
如果函数执行成功,它会遍历返回的适配器信息,将每个适配器的描述(通常包含IP地址)添加到集合中。 最后,在你的主程序中,你可以简单地调用`GetIPList`函数来获取IP地址列表,并将其显示或处理: ```vb Dim ...
跨平台获取本机IP地址通常需要使用操作系统提供的API或者第三方库。在Windows系统中,可以使用Winsock API,而在Linux或Mac OS中,可以利用socket库和`ifconfig`命令。对于Java开发者,可以使用`java.net.Network...
- **iControl REST API**:允许通过编程接口来自动化管理和配置任务,提高运维效率。 - **报表和分析工具**:提供详细的流量统计和性能指标,帮助识别瓶颈并优化系统性能。 #### 三、应用场景 - **企业级应用**:...
部分IP地址通常指的是IP地址的一部分,可能是整个IP地址的前缀,也可能是后缀,或者某个特定范围的IP地址集合。在网站开发中,部分IP地址可能用于实现特定功能,例如访问控制、数据分析、地理位置追踪等。例如,一个...
在探讨如何在Android环境中获取设备的IP地址时,我们首先需要理解几个关键概念:网络接口(NetworkInterface)、IP地址(InetAddress)以及如何通过Java代码在Android应用中安全地执行网络操作。以下是对“Android获取IP...
在IT行业中,网络编程是不可或缺的一部分,而IP地址的管理和查询是网络运维和数据分析的常见需求。本项目是一个基于Java开发的小工具,专门用于批量查询IP地址的归属地信息。这个工具可以帮助用户快速获取大量IP地址...
总结起来,".NET版IP地址切换器"是一款基于.NET Framework编写的实用工具,它通过操作系统API实现了网络接口的IP地址切换功能。开发者通过熟练运用.NET提供的网络编程接口,结合异步编程和GUI设计,创建了一个便捷...
爱雪儿IP定位查询系统是一款基于ASP语言开发的应用程序,主要用于获取并解析互联网上用户的IP地址,并根据IP地址进行地理位置的定位。该系统的核心功能是将IP地址转换为对应的地理坐标,包括国家、城市等信息,为...
综上所述,VB.NET提供了丰富的API用于读取和修改计算机的网络配置,包括MAC和IP地址。然而,修改网络配置应当谨慎,以免破坏网络连接或违反网络安全策略。在开发过程中,理解网络协议和操作系统是如何处理这些配置是...