今天起开始玩百度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. Linux运维(3年以内)

    1.精通shell编程,熟练应用awk,sed,grep,strace,tcpdump等常用命令; 2.精通windows server,linux,mssql,mysql,熟悉网络,cisco,ju ...

  2. PHP缓存技术

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(一):下载平台并基于直连环境运行

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  4. linux日志文件

    linux日志文件 在系统运行正常的情况下学习了解这些不同的日志文件有助于你在遇到紧急情况时从容找出问题并加以解决. /var/log/messages — 包括整体系统信息,其中也包含系统启动期间的 ...

  5. 在IntelliJ IDEA中添加框架支持时找不到Hibernate的解决办法

    问题描述 第一次在Add Frameworks support界面中添加hibernate支持的时候,异常中断,导致没有成功添加. 第二次进入Add Frameworks support窗口时,发现找 ...

  6. devpress 的gridview 控件的行拖拽 z

    首先,添加引用:using DevExpress.XtraGrid.Views.Grid.ViewInfo;               gridControl1.AllowDrop = true; ...

  7. mysql常见错误及解决方案

    mysql error 2005 - Unknown MySQL server host 'localhost'(0) 此错误一般为地址信息错误,注意是否有空格. 在连接本地数据库时,最好使用127. ...

  8. 【CentOS】压缩打包

    一.gzip [-d][-1-9][filename] -d  解压 -[1-9]  压缩等级(默认为6) zcat filename.gz 查看压缩文件 最小化安装centOS是没有安装bzip2的 ...

  9. JS 之Blob 对象类型

    原文 http://blog.csdn.net/oscar999/article/details/36373183 什么是Blob? Blob 是什么? 这里说的是一种Javascript的对象类型. ...

  10. XIII Open Cup named after E.V. Pankratiev. GP of Ukraine

    A. Automaton 后缀自动机可以得到$O(2n+1)$个状态,但是后缀自动机会拒绝接收所有不是$S$的子串的串,所以在建立后缀自动机的时候不复制节点即可得到$n+1$个状态的DFA. #inc ...