# 写在前面,这篇文章的原创作者是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归属地查询的资料请关注其它相关文章!
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“python 实现全球IP归属地查询工具”评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新动态
2025年10月28日
2025年10月28日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]