全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 5194|回复: 27
打印 上一主题 下一主题

用python写了一个IP高精度定位的玩具.

[复制链接]
跳转到指定楼层
1#
发表于 2016-11-18 16:05:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
http://155.254.35.131:8002   

http://155.254.35.131:8002/?ip=指定ip

学了一个月的python,大神不要喷我.百度API
推荐
发表于 2016-11-18 16:25:46 | 只看该作者
真巧  我来给个php版本吧
  1. <?php
  2. function GetPositionByIP($ip){
  3.         $headers = array(
  4.                 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/2008052906 Firefox/3.0',
  5.                 'Referer: http://lbsyun.baidu.com/skins/MySkin/resources/iframs/heightAccApi.html'
  6.         );
  7.         $ch = curl_init();
  8.         curl_setopt($ch,CURLOPT_URL,"http://api.map.baidu.com/highacciploc/v1?ak=dyPcBVF2TUAYldcFspcLmmNMi6P34f47&qterm=pc&callback_type=json&coord=bd09ll&qcip=".urlencode($ip));
  9.         curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  10.         curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
  11.           $data = curl_exec($ch);
  12.           curl_close($ch);
  13.         if($data = json_decode($data,true)){
  14.                 if(isset($data['result'])){
  15.                         if($data['result']['error'] != 161){
  16.                                 return false;
  17.                         }else{
  18.                                 return $data['content']['location'];
  19.                         }
  20.                 }else{
  21.                         return false;
  22.                 }
  23.         }else{
  24.                 return false;
  25.         }
  26. }

  27. function GetMapPicByPosition($parray){
  28.         $lat = urlencode($parray['lat']);
  29.         $lng = urlencode($parray['lng']);
  30.         $headers = array(
  31.                 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/2008052906 Firefox/3.0',
  32.                 'Referer: http://developer.baidu.com/map/skins/MySkin/resources/iframs/static-1.html'
  33.         );
  34.         $ch = curl_init();
  35.         curl_setopt($ch,CURLOPT_URL,"http://api.map.baidu.com/staticimage/v2?ak=E4805d16520de693a3fe707cdc962045&width=800&height=600&center={$lng},{$lat}&labels={$lng},{$lat}&zoom=15&labelStyles=Here,1,11,0xffffff,0x000fff,1");
  36.         curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  37.         curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
  38.         $data = curl_exec($ch);
  39.         curl_close($ch);
  40.         if(json_decode($data,true)){
  41.                 return false;
  42.         }else{
  43.                 return $data;
  44.         }
  45. }

  46. function GetAddressByPosition($parray){
  47.         $lat = urlencode($parray['lat']);
  48.         $lng = urlencode($parray['lng']);
  49.         $headers = array(
  50.                 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/2008052906 Firefox/3.0',
  51.                 'Referer: http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding'
  52.         );
  53.         $ch = curl_init();
  54.         curl_setopt($ch,CURLOPT_URL,"http://api.map.baidu.com/geocoder/v2/?ak=E4805d16520de693a3fe707cdc962045&location={$lat},{$lng}&output=json&pois=0");
  55.         curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  56.         curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
  57.         $data = curl_exec($ch);
  58.         curl_close($ch);
  59.         if($data = json_decode($data,true)){
  60.                 if($data['status'] != 0){
  61.                         return false;
  62.                 }else{
  63.                         return $data['result']['formatted_address'];
  64.                 }
  65.         }else{
  66.                 return false;
  67.         }
  68. }
  69. if(isset($_GET['ip']) && filter_var($_GET['ip'],FILTER_VALIDATE_IP)){
  70.   $pos = GetPositionByIP($_GET['ip']);
  71. }else{
  72.   $pos = GetPositionByIP($_SERVER['REMOTE_ADDR']);
  73. }
  74. if($pos){
  75.   $img = base64_encode(GetMapPicByPosition($pos));
  76.   echo '<img src="data:image/png;base64,'.$img.'">';
  77.   echo GetAddressByPosition($pos);
  78. }else{
  79.   echo 'CAN NOT FETCH DATA';
  80. }
复制代码
2#
发表于 2016-11-18 16:08:27 | 只看该作者
你的ip:219.140.222.171已被记录 {"result":{"error":167,"loc_time":"2016-11-18 16:09:36"}}
3#
发表于 2016-11-18 16:10:42 | 只看该作者
测试本地,错的
测试服务器,报错

小伙子继续努力
4#
发表于 2016-11-18 16:12:31 | 只看该作者
好歹错误处理加上呀。
5#
 楼主| 发表于 2016-11-18 16:21:04 | 只看该作者
潜水看美女 发表于 2016-11-18 16:10
测试本地,错的
测试服务器,报错

错也是百度api的错.只是调用而已
6#
发表于 2016-11-18 16:23:36 | 只看该作者
。。。。。。
太随意了,起码把json数据解析一下再发出来啊
8#
发表于 2016-11-18 16:56:38 | 只看该作者
西行寺幽幽子 发表于 2016-11-18 16:25
真巧  我来给个php版本吧

已验证可用,带图
谢谢
10#
发表于 2016-11-18 17:15:12 | 只看该作者
西行寺幽幽子 发表于 2016-11-18 16:25
真巧  我来给个php版本吧

貌似不能显示公司名字,我记得前几天的可以显示哪个公司的……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-6-30 02:05 , Processed in 0.088302 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表