今天起开始玩百度APIStore里面的免费API。以前用过的有12306的:数据接口,有时间整理出来,12306的有点乱就是了。还有扇贝以及有道的API,之前用在留言板里自动翻译,公司用过百度地图以及百科的,百科的纯用file_get_contents然后preg_match_all去获取,类似的还做过新闻采集,真是心累,还没用过cURL。

百度API:IP地址查询

效果:

这段代码没啥看的,都是百度的示例代码。

 2     if(!isset($_POST['ip']))
exit;
$ip=trim($_POST['ip']);
$ch = curl_init();
$url = 'http://apis.baidu.com/apistore/iplookupservice/iplookup?ip='.$ip;
$header = array(
'apikey:百度API密钥',
);
// 添加apikey到header
curl_setopt($ch, CURLOPT_HTTPHEADER , $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 执行HTTP请求
curl_setopt($ch , CURLOPT_URL , $url);
$res = curl_exec($ch);
curl_close($ch);
$data=json_decode($res,true); $str="<span style='color:#26B198'>";
if($data['errNum']==0 && !empty($data['retData']['country'])){
$str.="{$data['retData']['country']}.{$data['retData']['province']}.{$data['retData']['city']}.{$data['retData']['district']},{$data['retData']['carrier']}";
}
$str.="</span>";
echo $str;

json_decode()的第二个参数为true代表返回数组,比较好使用数据。

其中,IP不输入的话,为自己的IP,搜索网上的真实IP也用的不理想,还在本地就更乱了。所以获取IP用的站长之家的数据,不严谨。

 //由于IP总获取不到,就从站长之家偷了,分别获取PC和wap端的
$ipc=curl_init();
curl_setopt($ipc,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ipc,CURLOPT_URL,"http://ip.chinaz.com");
$ipk=curl_exec($ipc);
curl_close($ipc);
preg_match('/<dd class="fz24">(.*?)<\/dd>/is', $ipk, $ipx);
$ip='';
if(isset($ipx[1])){
if(preg_match("/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/", $ipx[1])) {
$ip=$ipx[1];
}
}else{
$ipc=curl_init();
curl_setopt($ipc,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ipc,CURLOPT_URL,"http://m.tool.chinaz.com/ipsel");
$ipk=curl_exec($ipc);
curl_close($ipc);
preg_match('/<b class="fontcolor02">(.*?)<\/b>/is', $ipk, $ipx);
if(isset($ipx[1])){
if(preg_match("/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/", $ipx[1])) {
$ip=$ipx[1];
}
}
}

直接去class名为fz24的div里取的(类似还可以在站长之家取到地址分辨率操作系统等等,但终究不是长久之计),出来再判断是不是ip格式,最后的$ip如果有的话就是本机IP。

搜到IP地址查询可以使用新浪、淘宝和百度三家的接口:

1.新浪:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=***.**.**.*  //js是js格式,可改为json
2.淘宝:http://ip.taobao.com/instructions.php //这链接是介绍,接口在http://ip.taobao.com/service/getIpInfo.php?ip=***.**.***.**
3.百度:http://api.map.baidu.com/lbsapi/cloud/ip-location-api.htm

用自己IP测试的效果如下:分别是百度,淘宝,新浪:

可以看出来百度确定到区县了,淘宝没获取到但淘宝信息明显比较多邮编/行政区码都有,新浪有点不足了。

IP地址还可以,通过百度地图API获取坐标,+增加坐标:

//百度地图通过IP获取坐标
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,"http://api.map.baidu.com/location/ip?ak=百度开发者密钥&ip=$ip");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$res=curl_exec($ch);
$data=json_decode($res,true);
if($data['status']===0){
if(isset($data['content']['point']['x']) && isset($data['content']['point']['y']))
$str.='&nbsp;&nbsp;['.$data['content']['point']['x'].','.$data['content']['point']['y'].']';
}
curl_close($ch);
$str.="</span>";
echo $str;

这种坐标精度不高,就这样只到市,最终效果:

注:API密钥和AK密钥不是一个东西,API密钥是百度APIStroe的密钥,AK密钥属于百度地图开发密钥。

[1]IP地址查询的更多相关文章

  1. IP地址查询接口及调用方法

    1.查询地址 搜狐IP地址查询接口(IP):http://pv.sohu.com/cityjson 1616 IP地址查询接口(IP+地址):http://w.1616.net/chaxun/ipto ...

  2. IP地址查询接口

    新浪的IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js 新浪多地域测试方法:http://int.dpool. ...

  3. 根据IP地址查询所在地

    using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Tex ...

  4. Android中由IP地址查询经纬度坐标的实例

    大家都知道,根据IP地址就可以知道它所在的具体位置,在Android中同样可以由IP地址得到它的位置,即具体的地理经纬度坐标. 本文就直接以代码的方式演示如何根据IP地址查询地理经纬度坐标位置,下面的 ...

  5. 齐全的IP地址查询接口及调用方法(转)

    设计蜂巢IP地址查询接口:http://www.hujuntao.com/api/ip/ip.php 腾讯IP地址查询接口:http://fw.qq.com/ipaddress 新浪IP地址查询接口: ...

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

    原文地址:http://yushine.iteye.com/blog/1717586 推荐实用IP138 http://www.baidu.com/s?wd=IP&rsv_spt=1& ...

  7. 微信小程序开发-IP地址查询-例子

    微信小程序开发  小程序搜索框  IP地址查询  搜索查询  样例 微信小程序 开发 参考   https://mp.weixin.qq.com/debug/wxadoc/dev/component/ ...

  8. python requests库爬取网页小实例:ip地址查询

    ip地址查询的全代码: 智力使用ip183网站进行ip地址归属地的查询,我们在查询的过程是通过构造url进行查询的,将要查询的ip地址以参数的形式添加在ip183url后面即可. #ip地址查询的全代 ...

  9. 分享几个免费IP地址查询API接口

    几个免费IP地址查询API接口 1.IP地址查询接口:http://apis.juhe.cn/ip/ip2addr要先去https://www.juhe.cn/docs/api/...申请APPKEY ...

随机推荐

  1. C#设计模式之抽象工厂

    抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类. 抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一族产品 当一个工厂等级结构可以创建出分属于不同产品等级结构的 ...

  2. JS中修改属性

    <!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...

  3. C#运算符

    运算符 1.算数运算符 赋值运算符 等号在C#中并不是表示相等的意思,而是表示赋值,把等号右边的值赋值给 等号左边的变量 由等号连接的表达式,叫做赋值表达式.我们要求等号两边的数据类型必须一 致. 2 ...

  4. Android Studio增加NDK代码编译支持--Mac环境

    Android的APP开发基本都是使用Java或者跨平台框架进行开发的,对于很多APP来说已经足够了,但是,对于提供功能给外部使用或者性能要求很高的需求下,如图像处理等,可能会需要C/C++库的支持, ...

  5. 基于Netty4的HttpServer和HttpClient的简单实现

    Netty的主页:http://netty.io/index.html 使用的Netty的版本:netty-4.0.23.Final.tar.bz2 ‐ 15-Aug-2014 (Stable, Re ...

  6. ZZULI 1876: 蛤玮的项链 Hash + 二分

    Time Limit: 6 Sec  Memory Limit: 128 MBSubmit: 153  Solved: 11 SubmitStatusWeb Board Description 蛤玮向 ...

  7. [SDOI2013]方程

    ...最近考了一道数学题.是典型的隔板问题. P.S.最近八中oj上面没有系统地刷过题 题面可以直接转化为m个球分到n个箱子,每个箱子至少放1个,前n1个箱子的球数必须满足全部小于等于A[i],接着n ...

  8. Webpack 入门指迷--转载(题叶)

    最近看到这个东西,一头雾水.看了一些资料了解了Webpack概念,大体是webpack 是一个模块绑定器,主要目的是在浏览器上绑定 JavaScript 文件. 看到题叶写的一篇介绍,写的很好,转载连 ...

  9. HTML: vertical algin Big/small div in same row (bootstrap)

    Reference: http://stackoverflow.com/questions/20547819/vertical-align-with-bootstrap-3?answertab=vot ...

  10. 【改】iOS学习之键盘类型UIKeyboardType

    关于 UITextField 的键盘是可以自定义的,正好在一个代码用这个,就总结一下. 在 UITextField 中有一个 keyboardType 属性,它的类型是一个枚举值,下面就是枚举值和对应 ...