根据手机或者ip获取归属地-第三方接口

<?php/*** 归属地工具* Class BelongingToLocal*/
class BelongingToLocal
{protected $cityArr = ["北京", "上海", "天津", "重庆"];protected $cityStr = "北京,上海,天津,重庆,河北,山西,河南,辽宁,吉林,黑龙江,内蒙古,江苏,山东,安徽,浙江,福建,湖北,湖南,广东,广西,江西,四川,海南,贵州,云南,西藏,陕西,甘肃,青海,宁夏,新疆,港澳台";/*** 通过手机号获取归属* @param string $tel* @return array*/public function useTel($tel = ''){list($area, $city) = $this->tel_360($tel);if ($area == '' || $city == '') list($area, $city) = $this->tel_K780($tel);if ($area == '' || $city == '') list($area, $city) = $this->tel_51240($tel);if ($area == '' || $city == '') list($area, $city) = $this->tel_sg($tel);return $this->format($area, $city);}/*** 通过ip获取归属* @param string $ip* @return array*/public function useIp($ip = ''){list($area, $city) = $this->ip_360($ip);if ($area == '' || $city == '') list($area, $city) = $this->ip_bd($ip);if ($area == '' || $city == '') list($area, $city) = $this->ip_ip($ip);return $this->format($area, $city);}/*** 360* @param $ip* @return array*/protected function ip_360($ip){$this->header = [];$result = $this->request("http://www.ip360.cn/", "ip={$ip}&action=2");$area = $city = $result_str = '';$location = $this->getSubstr($result, 'IP详细地址:&nbsp; <font color=#cc3300>', '</font>');$arrConf = explode(",", $this->cityStr);$isHas = false;foreach ($arrConf as $value) {if ($isHas) break;$area = $value;if ($value != '' && strpos(mb_substr($location, 0, 6), $value) !== false) $isHas = true;if (!empty($c = $this->getSubstr($location, $value . '自治区', '市'))) $city = $c;if (!empty($c = $this->getSubstr($location, $value . '省', '市'))) $city = $c;if (!empty($c = $this->getSubstr($location, $value . '市', '市'))) $city = $c;}list($area, $city) = $this->filter($area, $city, $result_str);return [$area, $city];}/*** 360* @param $tel* @return array*/protected function tel_360($tel){$this->header = [];$result = $this->request("https://cx.shouji.360.cn/phonearea.php?number={$tel}");$result = json_decode($result, true);$area = $city = $result_str = '';$area = $result['data']['province'];$city = $result['data']['city'];list($area, $city) = $this->filter($area, $city, $result_str);return [$area, $city];}/*** api.k780.com* @param $tel* @return array*/protected function tel_K780($tel){$this->header = [];$result = $this->request("http://api.k780.com/?app=phone.get&phone={$tel}&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json");$result = json_decode($result, true);$area = $city = $result_str = '';$result_str = $result['result']['att'];$result = explode(',', $result['result']['att']);$area = $result[1];$city = $result[2];list($area, $city) = $this->filter($area, $city, $result_str);return [$area, $city];}/*** 便民* @param $tel* @return array*/protected function tel_51240($tel){$this->header = [];$result = $this->request("http://shouji.51240.com/{$tel}__shouji/");$regex = '/<td bgcolor=\"#FFFFFF\" align=\"center\" style=\"font-size:16px;\">(.*)<\/td>/';preg_match_all($regex, $result, $result);$area = $city = $result_str = '';if (isset($result[1]) && isset($result[1][1])) {$result_str = $result = $result[1][1];$result = explode(" ", $result);if (isset($result[0]) && isset($result[1])) {$area = $result[0];$city = $result[1];}}list($area, $city) = $this->filter($area, $city, $result_str);return [$area, $city];}/*** 搜狗* @param $tel* @return array*/protected function tel_sg($tel){$this->header = [];$result = $this->request("https://www.sogou.com/websearch/phoneAddress.jsp?phoneNumber={$tel}");$result = mb_convert_encoding($result,  'utf-8', 'gbk');$regex='/void\(\"(.*)\"\)/';preg_match_all($regex,$result,$result);$area = $city = $result_str = '';if(isset($result[1]) && isset($result[1][0])) {$result_str = $result = $result[1][0];$result = explode(" ",$result);$arrConf = explode(",", $this->cityStr);foreach ($arrConf as $value) {if ($value != '' && strpos($result[0], $value) !== false) {$area = $value;$city = $result[0];$city = str_replace("省", "", $city);$city = str_replace($area, "", $city);break;}}}list($area, $city) = $this->filter($area, $city, $result_str);return [$area, $city];}/*** www.ip.cn* @param $ip* @return array*/protected function ip_ip($ip){$this->header = ["User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36","Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3","Host: www.ip.cn"];$result = $this->request("https://www.ip.cn/api/index?ip={$ip}&type=1");$regex='/address\":\"中国  (.*)\",\"ip\"/';preg_match_all($regex,$result,$result);$area = $city = $result_str = '';if(isset($result[1]) && isset($result[1][0])) {$result_str = $result = $result[1][0];$result = explode(" ",$result);if (isset($result[0]) && isset($result[1])) {$area = $result[0];$city = $result[1];}}list($area, $city) = $this->filter($area, $city, $result_str);return [$area, $city];}/*** 百度* @param $ip* @return array*/protected function ip_bd($ip){$this->header = ['Host: sp0.baidu.com'];$result = $this->request('http://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query=' . $ip . '&co=&resource_id=6006&oe=utf8');$data = json_decode($result, true);$area = $city = $result_str = '';if (!empty($data['data'])) {$location = $data['data'][0]['location'];$arrConf = explode(",", $this->cityStr);$isHas = false;foreach ($arrConf as $value) {if ($isHas) break;$area = $value;if ($value != '' && strpos($location, $value) !== false) $isHas = true;if (!empty($c = $this->getSubstr($location, '自治区', ' '))) $city = $c;if (!empty($c = $this->getSubstr($c, '市', ' '))) $city = $c;if (!empty($c = $this->getSubstr($c, '省', ' '))) $city = $c;}}list($area, $city) = $this->filter($area, $city, $result_str);return [$area, $city];}/*** 过滤字符* @param $area* @param $city* @param $str* @return array*/protected function filter($area, $city, $str){$area = str_replace('省', '', $area);$city = str_replace('市', '', $city);$city = str_replace('省', '', $city);if (strpos($str, '香港') !== false) {$area = '港澳台';$city = '香港';} else if (strpos($str, '澳门') !== false) {$area = '港澳台';$city = '澳门';} else if (strpos($str, '台湾') !== false) {$area = '港澳台';$city = '台湾';}$index = array_search($area, $this->cityArr);if ($index !== false) $city = $this->cityArr[$index];return [$area, $city];}/*** 格式化* @param $area* @param $city* @return array*/protected function format($area, $city){$arrConf = explode(",", $this->cityStr);$isHas = false;foreach ($arrConf as $value) {if ($value != '' && strpos($area, $value) !== false) {$isHas = true;$area = $value;}}if (!$isHas) {unset($city);unset($area);}if (isset($area) && isset($city) && !empty($area) && !empty($city)) {return ['res' => true, 'country' => '中国', 'area' => $area, 'city' => $city];} else {return ['res' => false];}}/*** 文本取中间* @param $str* @param $leftStr* @param $rightStr* @return bool|string*/protected function getSubstr($str, $leftStr, $rightStr){$left = strpos($str, $leftStr);$right = strpos($str, $rightStr, $left);if ($left < 0 or $right < $left) return '';return substr($str, $left + strlen($leftStr), $right - $left - strlen($leftStr));}protected $remoteAddress;protected $header = [];protected function request($url, $post = null, $cookie = '', $returnCookie = 0){$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);if ($this->remoteAddress) {curl_setopt($curl, CURLOPT_PROXY, $this->remoteAddress);}//curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($curl, CURLOPT_HTTPHEADER, $this->header);curl_setopt($curl, CURLOPT_AUTOREFERER, 1);if ($post !== null) {curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $post);}if ($cookie) {curl_setopt($curl, CURLOPT_COOKIE, $cookie);}curl_setopt($curl, CURLOPT_HEADER, $returnCookie);curl_setopt($curl, CURLOPT_TIMEOUT, 10);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);$data = curl_exec($curl);if (curl_errno($curl)) {return curl_error($curl);}curl_close($curl);if ($returnCookie) {list($header, $body) = explode("\r\n\r\n", $data);preg_match_all("/set\-cookie:([^\r\n]*)/i", $header, $matches);$cookie = [];foreach ($matches[1] as $item) {$cookie[] = explode(';', $item)[0];}return ['body' => $body, 'header' => $header, 'cookie' => $cookie];}return $data;}
}

手机+ip查询归属地相关推荐

  1. 免费的webservice接口 天气预报/IP查询/股票查询/手机归属地等

    搜集了一些公共服务的 Web Service 接口,可以在自己的应用中使用. 来自 www.36wu.com 的服务: 快递查询WEB服务 http://webservice.36wu.com/Exp ...

  2. 免费的webservice接口(天气预报/IP查询/股票查询/手机归属地等)

    搜集了一些公共服务的 Web Service 接口,可以在自己的应用中使用. 来自 www.36wu.com 的服务: 快递查询WEB服务 http://webservice.36wu.com/Exp ...

  3. 网易邮箱中非常实用的工具,手机、IP等归属地

    网易邮箱中有一项非常实用的工具,就是百宝箱,里面有很多实用的查询小工具,如IP查询.手机归属查询.身份证查询等等.为了方便大家查询,今天我把网易邮箱小工具集的页面给down了下来,大家可以下载下来,不 ...

  4. 使用腾讯IP查询-判断IP归属地-Vic's blog

    使用IP获取地理位置信息 最近博客刚写了一个地理信息统计的功能,想看看来访我博客的网友都来自哪些地区,这要用到IP地理信息查询接口,网上有很多大厂(如腾讯,淘宝,搜狐等等)或地理信息机构开放的IP地理 ...

  5. php 选择地区 查找,地区编码查询_php根据ip查询所在地区的代码

    摘要 腾兴网为您分享:php根据ip查询所在地区的代码,中信金通,盈益云,熊猫视频,湘税社保等软件知识,以及游戏通用窗口化工具,史诗战争补丁,荣威车友会,开机引导,兴化农商行,修改手机mac地址,问道 ...

  6. 修改ip地址的软件是真的嘛_如何修改手机ip地址

    手机相对于电脑那个更加的好用,可能两种的使用需求不同,很多的方面无法进行比较,但是手机更方便携带,对于外出手机使用的可能会更多会,因此手机的代理ip出现,是因为除去电脑工作,使用手机工作的是最多的,并 ...

  7. 使用淘宝的IP查询API实现IP地址省市展示

    在好多的应用中需要对用户的IP地址进行实际地址显示,这时候就需要对IP进行解析,可以采用TX的IP地址库去查询,但是这个动态库需要补断的更新比较麻烦,现在我们可以直接使用淘宝的IP查询接口来直接调用, ...

  8. 一款功能强大的IP查询工具

    01 Fav-up Fav-up是一款功能强大的IP查询工具,该工具可以通过Shodan和Favicon(网站图标)来帮助研究人员查询目标服务或设备的真实IP地址. 02 工具安装 首先,该工具需要本 ...

  9. 手机型号云服务器,手机型号查询接口

    手机型号查询接口 内容精选 换一换 通过调用云手机服务提供的接口,您可以完整地使用云手机的所有功能.例如查询云手机列表.重启云手机.为云手机推送文件. 华为云帮助中心,为用户提供产品简介.价格说明.购 ...

最新文章

  1. string判断是否是正常的ip格式
  2. C语言的单链表创建:头插法/尾插法
  3. 生活实遇记-Kindle好久没用,屏幕一直处于电池状态,怎么解决?
  4. 高可用与负载均衡(7)之聊聊Lvs-DR+Keepalived的解决方案
  5. mysql操作语句now_【MySQL数据库开发之二】MySQL 基础语句的书写与操作!
  6. 虫食算(洛谷-P1092)
  7. linux下调整交换分区的大小
  8. 人工智能将为维护网络安全带来更多可能
  9. 俞昆20155335《网络对抗》MSF基础应用
  10. 丹尼带你入坑无人机3 - 四轴飞行原理
  11. JDK1.5版本新增特性
  12. [NLP]OpenNLP文档分类器的使用
  13. 计算机上英语CE,计算器英语
  14. TFS映射关系出错的几种
  15. 网页/公众号音乐下载
  16. jsp返回上一个页面并刷新
  17. 数据库 Table is marked as crashed and should be repaired 解决办法
  18. 微信一次性订阅消息流程
  19. mysql error unpacking_linux 安装 mysql rpm包出现error: unpacking of archive failed on file
  20. Windows Azure 常见问题汇总

热门文章

  1. 数据分析之车险理赔业务
  2. 中国IT人员35岁后的发展出路
  3. Go语言-【包package】-包的基本概念
  4. 【面试题】面试官:简述TCP/IP三次握手?
  5. Kafka学习之一 Kafka是什么,主要应用在什么场景?
  6. 拼多多无货源店群的核心——从选品到出单,运营方法的重要性走向巅峰
  7. 潘建伟团队再登Nature:建成全球首个集成量子通信网,全长4600公里
  8. 字节跳动——视频系统架构
  9. AUC曲线计算方法及代码实现
  10. 网络与通信程序设计-基于UDP的广播通信实例