全球主机交流论坛

标题: 用python写了一个IP高精度定位的玩具. [打印本页]

作者: linhai    时间: 2016-11-18 16:05
标题: 用python写了一个IP高精度定位的玩具.
http://155.254.35.131:8002   

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

学了一个月的python,大神不要喷我.百度API
作者: 全球DDCC论坛    时间: 2016-11-18 16:08
你的ip:219.140.222.171已被记录 {"result":{"error":167,"loc_time":"2016-11-18 16:09:36"}}
作者: 潜水看美女    时间: 2016-11-18 16:10
测试本地,错的
测试服务器,报错

小伙子继续努力
作者: terry0314    时间: 2016-11-18 16:12
好歹错误处理加上呀。
作者: linhai    时间: 2016-11-18 16:21
潜水看美女 发表于 2016-11-18 16:10
测试本地,错的
测试服务器,报错

错也是百度api的错.只是调用而已
作者: tumbzzc    时间: 2016-11-18 16:23
。。。。。。
太随意了,起码把json数据解析一下再发出来啊
作者: 西行寺幽幽子    时间: 2016-11-18 16:25
真巧  我来给个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. }
复制代码

作者: mix    时间: 2016-11-18 16:56
西行寺幽幽子 发表于 2016-11-18 16:25
真巧  我来给个php版本吧

已验证可用,带图
谢谢
作者: yousihai    时间: 2016-11-18 16:59
LSS帅呆了
作者: moker    时间: 2016-11-18 17:15
西行寺幽幽子 发表于 2016-11-18 16:25
真巧  我来给个php版本吧

貌似不能显示公司名字,我记得前几天的可以显示哪个公司的……
作者: dzxx36gyy    时间: 2016-11-18 17:32
这贴我就服7楼
作者: yumin9822    时间: 2016-11-18 17:33
支持php版本
作者: Tran    时间: 2016-11-18 17:38
网址挂了
作者: mix    时间: 2016-11-18 17:39
西行寺幽幽子 发表于 2016-11-18 16:25
真巧  我来给个php版本吧

这个似乎加extensions参数无效
作者: 柊星瞳    时间: 2016-11-18 17:40
说起来 我打算学 py
作者: Cyyzaid    时间: 2016-11-18 17:49
百度的库会精准吗。
我推荐用IPIP.NET的库
作者: gger    时间: 2016-11-18 22:53
需要继续学习啊
作者: 椰子    时间: 2016-11-19 00:23
Cyyzaid 发表于 2016-11-18 17:49
百度的库会精准吗。
我推荐用IPIP.NET的库

百度的库。。。你用过再评价。。
作者: buzz    时间: 2016-11-19 03:11
西行寺幽幽子 发表于 2016-11-18 16:25
真巧  我来给个php版本吧

怎么测了几个ip都不准啊
作者: zsl198854    时间: 2016-11-19 08:42
高精度。。。。。    是你提高的精度吗?
作者: 非凡菜鸟    时间: 2016-11-19 09:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: linhai    时间: 2016-11-19 10:05
zsl198854 发表于 2016-11-19 08:42
高精度。。。。。    是你提高的精度吗?

我添加了几亿个,你说精度高不高
作者: akang    时间: 2016-11-19 10:12
网址挂了~ 不过百度这个高精度还是和百度地图~你懂的
作者: caogen9    时间: 2016-11-19 14:41
打不开了
作者: mix    时间: 2016-12-6 09:48
本帖最后由 mix 于 2016-12-6 09:53 编辑

PHP版似乎挂了,有相同情况的mjj么


===========
是白名单忘记添加IP了。。
作者: love5599    时间: 2016-12-6 10:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: 小妹妹来吃鸡吧    时间: 2016-12-6 11:01
love5599 发表于 2016-12-6 10:47
只能看地图,也不能缩放!

来个我的
http://tool.dwz.nz/Home/Ip
用.net core写的,现在自动取用户IP有点问题,取的是反代的IP

作者: love5599    时间: 2016-12-6 11:13
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 全球主机交流论坛 (https://52.ht/) Powered by Discuz! X3.4