一个基于百度地图定位ip位置

Posted by bfpiaoran on August 12, 2017

这里需要调用百度的一个接口

http://lbsyun.baidu.com/index.php?title=webapi/high-acc-ip

http://api.map.baidu.com/highacciploc/v1?qcip=183.55.116.90&qterm=pc&ak=“你的 密钥(AK)”&coord=bd09ll&extensions=3

结果为json格式数据、

freebuf已经给了 基于Python2.7写的脚本

无奈 自己不会2.7 只能python写了一个小脚本与 freebuf给的略有不同

#ip查询位置查询
import urllib.request
import json
import time
 
def get_ip(ip):
 
#ip = '222.33.63.163'
    ip_addrs = 'http://api.map.baidu.com/highacciploc/v1?qcip='+ip+'&qterm=pc&ak=SNjRPTGuQEyMK41FguGgxPFGGNmDkyQG&coord=bd09ll&extensions=3'
#print(ip_addrs)
 
    req = urllib.request.Request(ip_addrs)
    req.add_header = ('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/5.7.16173.12 Safari/537.36')
    html = urllib.request.urlopen(req)
    html = html.read().decode('utf-8')
    data_dict = json.loads(html)
    try:
        content = data_dict['content']
        city = content['formatted_address']
        print('地理位置为:'+city)
    except:
        print('未找到该ip')
 
def loop():
    ex = 1
    while ex == 1:
        ip = input('请输入ip地址(退出请输入q): ')
        ip = str(ip)
        if ip == 'q':
            ex = 2
            print('正在退出请稍等3秒')
        else:
            get_ip(ip)
        time.sleep(3)
 
 
 
if __name__ == '__main__':
    loop()

做了些小优化
但是百度地图有些数据还是获取不到 有机会还是试一试shodan的接口吧