写了一份根据手机号码获取城市名称的demo 之前网查了一个小公司流出来的Api 可能存在用着用着就不能停了的风险 为了稳定高效而又免费的获取手机号码归属地 又找了一个360 pc端手机号获取归属地的页面 做了一下抓取
流程上是先去读取小公司的接口 如果没有查到对应城市 程序就会自动去360抓取
这里只是获取了城市名称 如需更多信息请稍微修改一下
如果觉得抓取效率低 ,可以去聚合数据里面申请免费的每天1000条查询归属地接口
最好还是找个有钱的公司,做个小功能都抠搜的……
<?php
namespace Home\Controller;
use Think\Controller;
class MobileCityController extends Controller {
public function index(){
$Mobile = '1803142xxxx';
$Url = 'http://mobsec-dianhua.baidu.com/dianhua_api/open/location?tel='.$Mobile;
$result = json_decode($this ->getCurlRequest($Url), true);
if(isset($result['response'][$Mobile]['detail']['area'][0]['city'])){
$City = $result['response'][$Mobile]['detail']['area'][0]['city'];
}else{
$Url = 'https://www.so.com/s?q='.$Mobile.'&src=hao_tool';
$result = $this ->postCurlRequest($Url);
preg_match('/<p class=\"mh-detail\">([^<]*)<\/p>/is',$result, $re);
$qian=array(" ","\t","\r","\n");
$hou=array("","","","|");
$str = str_replace($qian,$hou,$re[1]);
$CityArray = explode('|', $str);
$City = empty($CityArray[4])?$CityArray[3]:$CityArray[4];
}
return $City;
}
function getCurlRequest($Url){
$ch = curl_init(); //初始化CURL句柄
curl_setopt($ch, CURLOPT_URL, $Url); //设置请求的URL
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //设为TRUE把curl_exec()结果转化为字串,而s不是直接输出
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); //设置请求方式
curl_setopt($ch,CURLOPT_HTTPHEADER,array("X-HTTP-Method-Override: GET"));//设置HTTP头信息
$document = curl_exec($ch);//执行预定义的CURL
curl_close($ch);
return $document;
}
function postCurlRequest($Url){
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $Url );
curl_setopt ( $ch, CURLOPT_POST, 1 );
curl_setopt ( $ch, CURLOPT_HEADER, 0 );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ( $ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt ( $ch, CURLOPT_HTTPHEADER, array (
'Content-Type: application/json'
));
$result = curl_exec ( $ch );
curl_close ( $ch );
return $result;
}
}