南强小屋 Design By 杰米
# 写在前面,这篇文章的原创作者是Charles我只是在他这个程序的基础上边进行加工,另外有一些自己的改造
# 并都附上了注释和我自己的理解,这也是我一个学习的过程。
# 附上大佬的GitHub地址:https://github.com/CharlesPikachu/Tools
'''
Function:
根据IP地址查其对应的地理信息
Author:
Charles
微信公众号:
Charles的皮卡丘
'''
import IPy
import time
import random
import hashlib
import argparse
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
}
def getaliIP(ip):
# 这里使用ali的IP地址查询功能。
# https://market.aliyun.com/products/"GET"
appcode = '填写你自己的xxx'
url = host + path + '"Authorization": 'APPCODE ' + appcode}
try:
# 进行获取调用结果。
rep = requests.get(url, headers=headers)
except:
return 'url参数错误'
# 判断是否调用成功。如果调用成功就接着进行下边的动作。
httpStatusCode = rep.status_code
if httpStatusCode == 200:
# 转换成json格式
data = rep.json()
# 然后获取其中的参数。
''''
# 是以下边这种格式进行返回的。
{
"code": 100,
"message": "success",
"ip": "110.188.234.66",
"result": {
"en_short": "CN", // 英文简称
"en_name": "China", // 归属国家英文名称
"nation": "中国", // 归属国家
"province": "四川省", // 归属省份
"city": "绵阳市", // 归属城市
"district": "涪城区", // 归属县区
"adcode": 510703, // 归属地编码
"lat": 31.45498, // 经度
"lng": 104.75708 // 维度
}
}'''
result1 = data.get('result')
city = result1['city']
province = result1['province']
nation = result1['nation']
district = result1['district']
latitude = result1['lat']
longitude = result1['lng']
# 返回我们需要的结果。
result = '-' * 50 + '\n' + '''[ali.com查询结果-IP]: %s\n经纬度: (%s, %s)\n国家: %s\n地区: %s\n城市: %s\n''' % (
ip, longitude, latitude, nation, province, city) + '-' * 50
else:
httpReason = rep.headers['X-Ca-Error-Message']
if (httpStatusCode == 400 and httpReason == 'Invalid Param Location'):
return "参数错误"
elif (httpStatusCode == 400 and httpReason == 'Invalid AppCode'):
return "AppCode错误"
elif (httpStatusCode == 400 and httpReason == 'Invalid Url'):
return "请求的 Method、Path 或者环境错误"
elif (httpStatusCode == 403 and httpReason == 'Unauthorized'):
return "服务未被授权(或URL和Path不正确)"
elif (httpStatusCode == 403 and httpReason == 'Quota Exhausted'):
return "套餐包次数用完"
elif (httpStatusCode == 500):
return "API网关错误"
else:
return "参数名错误 或 其他错误" + httpStatusCode + httpReason
return result
'''淘宝API'''
def getTaobaoIP(ip):
# 请求淘宝获取IP位置的API接口,但是现在有些不是很好用了。查不出来了。
# 看了看接口需要进行传入秘钥
url = 'http(s)://ips.market.alicloudapi.com/iplocaltion'
# 使用get方法进行请求。
res = requests.get(url+ip, headers=headers)
# 然后进行解析参数。
data = res.json().get('data')
print(res.json)
if data is None:
return '[淘宝API查询结果-IP]: %s\n无效IP' % ip
result = '-'*50 + '\n' + '''[淘宝API查询结果-IP]: %s\n国家: %s\n地区: %s\n城市: %s\n''' % (ip, data.get('country'), data.get('region'), data.get('city')) + '-'*50
return result
'''ip-api.com(很不准)'''
def getIpapiIP(ip):
url = 'http://ip-api.com/json/'
res = requests.get(url+ip, headers=headers)
data = res.json()
yd = youdao()
city = yd.translate(data.get('city'))[0][0]['tgt']
country = yd.translate(data.get('country'))[0][0]['tgt']
region_name = yd.translate(data.get('regionName'))[0][0]['tgt']
latitude = data.get('lat')
longitude = data.get('lon')
result = '-'*50 + '\n' + '''[ip-api.com查询结果-IP]: %s\n经纬度: (%s, %s)\n国家: %s\n地区: %s\n城市: %s\n''' % (ip, longitude, latitude, country, region_name, city) + '-'*50
return result
'''ipstack.com'''
def getIpstackIP(ip):
# 定义url
url = 'http://api.ipstack.com/{}"Query geographic information based on IP address.")
# 可选参数,代表着文件的名字,里边存放着IP之地。
parser.add_argument('-f', dest='filename', help='File to be queried with one ip address per line')
# 可选参数,代表着我们需要查询的IP地址。
parser.add_argument('-ip', dest='ipaddress', help='Single ip address to be queried')
args = parser.parse_args()
# 获取终端输入的参数。
ip = args.ipaddress
filename = args.filename
# 判断终端是否有进行输入参数。
if ip:
main(ip)
if filename:
with open(filename) as f:
# 获取文件中的所有IP地址,存放成一个列表的形式。
ips = [ip.strip('\n') for ip in f.readlines()]
for ip in ips:
main(ip)
以上就是python 实现全球IP归属地查询工具的详细内容,更多关于python ip归属地查询的资料请关注其它相关文章!
南强小屋 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
南强小屋 Design By 杰米
暂无python 实现全球IP归属地查询工具的评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。