今天起开始玩百度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. CSS 多类选择器

    写的代码多了,就会发现,自己越来越无知了,总以为html css很简单,已经掌握的很熟练了,其实我还差的很多. 平时没有用过css的这种写法  .a.b{display:block;}   上网一查才 ...

  2. 个人Win10 +archlinux安装笔记

    win10+archlinux 1.查看磁盘并分区并挂载1.1 分区/dev/sda1 WIN10 保留分区/dev/sda2 WIN10 ESP分区(EFI)/dev/sda3 WIN10 MSR分 ...

  3. jdbc连接数据库(mysql,sqlserver,oracle)

    package com.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepare ...

  4. Jquery 实现点击tab切换页签

    1.我将这个封装城了插件代码如下,你可以独立到一个js文件,然后页面引用下这个js文件: (function ($) { $.fn.extend({ qmTabs: function () { var ...

  5. 二、CoreAnimation之寄宿图详解

    在之前的图层树中我们知道,可以使用CALayer对象创建一些有背景颜色的图层,其实使用CALayer,不仅可以利用其展示背景颜色,还可以展示图片.而这些展示内容,其实就是CALayer的寄宿图.这一节 ...

  6. 关于 iOS 加密的一些详谈

    iOS 加密算法有那么几种,如 md5,sha1,AES,base64 和 rsa 等. 1. md5: MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息 ...

  7. android 扫描

    http://blog.csdn.net/abidepan/article/details/11902041

  8. 与你相遇好幸运,Sailsjs查询

    sailsjs 原生查询 ------------------------------------- Lands.native(function(err, collection) { if (err) ...

  9. Tensorflow mlp二分类

    只是简单demo, 可以看出tensorflow非常简洁,适合快速实验     import tensorflow as tf import numpy as np import melt_datas ...

  10. Asp.Net MVC4 + Oracle + EasyUI 学习 序章

    Asp.Net MVC4 + Oracle + EasyUI  序章 -- 新建微软实例 本文链接:http://www.cnblogs.com/likeli/p/4233387.html 1.  简 ...