[1]IP地址查询
今天起开始玩百度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.=' ['.$data['content']['point']['x'].','.$data['content']['point']['y'].']';
}
curl_close($ch);
$str.="</span>";
echo $str;
这种坐标精度不高,就这样只到市,最终效果:
注:API密钥和AK密钥不是一个东西,API密钥是百度APIStroe的密钥,AK密钥属于百度地图开发密钥。
[1]IP地址查询的更多相关文章
- IP地址查询接口及调用方法
1.查询地址 搜狐IP地址查询接口(IP):http://pv.sohu.com/cityjson 1616 IP地址查询接口(IP+地址):http://w.1616.net/chaxun/ipto ...
- IP地址查询接口
新浪的IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js 新浪多地域测试方法:http://int.dpool. ...
- 根据IP地址查询所在地
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Tex ...
- Android中由IP地址查询经纬度坐标的实例
大家都知道,根据IP地址就可以知道它所在的具体位置,在Android中同样可以由IP地址得到它的位置,即具体的地理经纬度坐标. 本文就直接以代码的方式演示如何根据IP地址查询地理经纬度坐标位置,下面的 ...
- 齐全的IP地址查询接口及调用方法(转)
设计蜂巢IP地址查询接口:http://www.hujuntao.com/api/ip/ip.php 腾讯IP地址查询接口:http://fw.qq.com/ipaddress 新浪IP地址查询接口: ...
- API之IP地址查询---权威的IP地址查询接口集合
原文地址:http://yushine.iteye.com/blog/1717586 推荐实用IP138 http://www.baidu.com/s?wd=IP&rsv_spt=1& ...
- 微信小程序开发-IP地址查询-例子
微信小程序开发 小程序搜索框 IP地址查询 搜索查询 样例 微信小程序 开发 参考 https://mp.weixin.qq.com/debug/wxadoc/dev/component/ ...
- python requests库爬取网页小实例:ip地址查询
ip地址查询的全代码: 智力使用ip183网站进行ip地址归属地的查询,我们在查询的过程是通过构造url进行查询的,将要查询的ip地址以参数的形式添加在ip183url后面即可. #ip地址查询的全代 ...
- 分享几个免费IP地址查询API接口
几个免费IP地址查询API接口 1.IP地址查询接口:http://apis.juhe.cn/ip/ip2addr要先去https://www.juhe.cn/docs/api/...申请APPKEY ...
随机推荐
- AngularJS SQL 获取数据
使用PHP从MySQL中获取数据: <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- ImageView属性
一.结构 java.lang.Object android.view.View android.widget.ImageView 已知直接子类: ImageButton, QuickContactBa ...
- 与你相遇好幸运,使用gulp流程化Typescript后端开发
tsc --init { "compilerOptions": { "module": "commonjs", ...
- MyEclipse Project Migration功能中文简单介绍
前端时间,我对myEclispe的project Migration产生了疑问,也不知道是干啥用的.然后百度之,翻译结果是项目迁移,再次百度其他人对这个的经验,没想到百度到的没多少,甚至都没有说明这个 ...
- 8-06循环结构WHILE
WHILE 循环语句可以根据某些条件重复执行一条SQL语句或一个语句块. 语句: WHILE(条件) BEGIN 语句或语句块 END 程序调试: ALT+F5启动调试 F9切换断点 F10遂过程, ...
- ffmpeg 如何音视频同步
转自:http://blog.csdn.net/yangzhiloveyou/article/details/8832516 output_example.c 中AV同步的代码如下(我的代码有些修改) ...
- CozyRSS开发记录5-订阅列表栏里的项
CozyRSS开发记录5-订阅列表栏里的项 1.订阅列表栏里的项的原型图 这里列表项依然参考傲游的RSS阅读器,以后可能会微调. 2.使用ControlTemplate来定制ListBoxItem 给 ...
- sqlmap的安装方法
1.安装Python2.7,设置Python环境变量
- 关于在程序中 文件新生成 在用os.system()程序对新生成的文件处理 举个栗子 如下:
print 'save to ',savedir+os.sep+d["FILE_NAME"] ff = open(savedir+os.sep+d[& ...
- Angular过滤器
angular中的过滤器有: currency 过滤货币 number 过滤数字, date 过滤日期 json 把js对象过滤为json字符串 limitTo 截取字符串,参数是正数则从左往右 ...