调用阿里API实现手机号归属地查询

news2024/9/29 13:24:28

调用阿里API实现手机号归属地查询

  • 1.作者介绍
  • 2.号码归属地介绍
    • 2.1 什么是手机号码归属地?
    • 2.2 为什么需要手机号码归属地?
    • 2.3 手机号码归属地查询对个人的运用
  • 3.调用阿里API实现手机号归属地查询
    • 3.1阿里API调用
    • 3.2补充内容
    • 3.3完整代码实现
    • 3.4输出结果
  • 4.问题与分析
  • 5.参考连接

1.作者介绍

翟鹏超,男,西安工程大学电子信息学院,2022级研究生
研究方向:输电线路导线覆冰状态监测
电子邮件:zhaipc0710@qq.com

张思怡,女,西安工程大学电子信息学院,2022级研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:981664791@qq.com

2.号码归属地介绍

2.1 什么是手机号码归属地?

在这里插入图片描述
我国的手机号码为11位,前3位是区分运营商的移动接入码,中国的移动接入码都是以1开头的,比如131、139、138等等,这个移动接入码是由运营商向工信部申请,由工信部统一颁发的,每颁发一次,都会发布一个《电信网号码资源使用证书》。第4-7位为地区编码,地区编码4位会对应到号码的初始归属地,这个归属地是对应到城市的,来电归属地就靠他了。一个城市是有多个归属地号码的,一个移动接入码下一共有1万种组合,也就是1万个归属地号码分配给中国的城市,这个号码归属地是由运营商自己管理的。第8-11位为用户号码,某个地区用户的唯一标识。
手机号码的归属地是由手机号的前七位决定的。当你用手机接听电话时,基本都会显示手机号码来自哪个地方,而这个地方也就是号码归属地,归属地的单位是市。当你的号码离开你号码所在的那个市,准确地说是离开电信公司在各个市所划分的网络区域时,这就形成漫游。

2.2 为什么需要手机号码归属地?

在2022年8月19日,工业和信息化部举行“新时代工业和信息化发展”系列新闻发布会第二场“打通经济社会信息大动脉”新闻发布会。工信部网络安全管理局一级巡视员周少清介绍,2021年以来累计拦截涉诈电话25.4亿次、涉诈短信30.5亿条。
常见的十大高发诈骗类型:
在这里插入图片描述
诈骗的形式虽然各不相同,但是核心离不开手机号码,而手机号码归属地是一个非常实用的工具,通过号码归属地起到第一判断的作用。

2.3 手机号码归属地查询对个人的运用

在手机号码整个使用群体中个人占比高达90%,使用人数大、占比高的特点也造成了电话诈骗的高频发生。在诈骗高发之时,手机号码归属地作为一个通讯衍生的工具,可以第一时间发挥其作用,在接到不明来电时可以通过手机号码归属地起到判断来电的作用。
在这里插入图片描述
运用一:判断号码是否真实
手机号码归属地查询可以帮我们在电话打进来的时候先初步判断是否是真实号码,减少陷入手机电话诈骗的现象。
运用二:对骚扰电话进行标记
手机号码归属地还可以对打过的骚扰电话手机号进行查询标记,这样下次看到就可以直接进行挂断、拉黑了,也可以把它进一步加入手机黑名单。

3.调用阿里API实现手机号归属地查询

3.1阿里API调用

注册并登录阿里云账号:
在这里插入图片描述
选择左上角“云市场”->“API”模块:
在这里插入图片描述
搜索框输入“号码归属地查询”,点击查看详情:
在这里插入图片描述
选择相应套餐,并“立即购买”:
在这里插入图片描述
购买成功后进入控制台资源管理界面,从中可以获取个人应用模块的API Key和Secret Key
在这里插入图片描述

3.2补充内容

AppKey和AppCode的区别:
AppKey就像是员工卡一样,用于标识一个应用程序,是应用程序与API服务之间进行安全认证的唯一密钥。对应到公司大楼中,它就相当于员工卡,可以证明你是这个公司的员工。
AppCode就像是门禁密码一样,用于验证应用程序是否被API服务授权。如果应用程序获得了有效的AppKey,并使用该AppKey向API服务发起请求,API服务会在返回结果时将AppCode一并返回给应用程序,应用程序需要在后续的请求中带上AppCode来验证自己是否被API服务授权。对应到公司大楼中,它相当于门禁密码,可以验证员工是否有权进入某些特定区域。
因此,AppKey和AppCode都是API服务安全认证机制的一部分,它们都是为了保证API服务的安全性和可靠性。

3.3完整代码实现

在代码的指定位置填入您的AppCode、要查询的电话号码,然后运行代码。
代码实现:

# 导入需要使用的模块
import urllib.request  # 用于发送HTTP请求
import ssl  # 用于忽略SSL证书验证

# API请求相关信息
host = 'https://api04.aliyun.venuscn.com'  # API请求地址
path = '/mobile'  # API请求路径
method = 'GET'  # API请求方法
appcode = '你的AppCode'  # 阿里云颁发给我们的AppCode,用于身份认证
querys = 'mobile=18138434699'  # 查询参数,即要查询的手机号码
bodys = {}  # 请求体参数,这里为空,因为是GET请求
url = host + path + '?' + querys  # API请求的完整URL

# 构建API请求对象
request = urllib.request.Request(url)  # 创建API请求对象
request.add_header('Authorization', 'APPCODE ' + appcode)  # 添加Authorization请求头

# 忽略证书错误
ctx = ssl.create_default_context()  # 创建默认的SSL上下文
ctx.check_hostname = False  # 不检查主机名
ctx.verify_mode = ssl.CERT_NONE  # 不验证SSL证书

# 发送API请求并读取响应内容
response = urllib.request.urlopen(request, context=ctx)  # 发送API请求,并忽略SSL证书验证
content = response.read()  # 读取响应内容

# 打印查询结果
if (content):
    print(content.decode('UTF-8'))  # 将响应内容从二进制字符串解码成Unicode字符串,并输出到控制台

3.4输出结果

在这里插入图片描述
这段输出的具体信息如下:
网络访问编号(num): 1813843
运营商(isp): 电信
省份(prov): 广东
城市(city): 深圳
网络类型(types): 中国电信
城市代码(city_code): 0755
区域代码(area_code): 440300
邮政编码(zip_code): 518000
经度(lng): 114.057868
纬度(lat): 22.543099
ret和msg表示返回的状态和消息,log_id是日志编号。

4.问题与分析

(1)
在这里插入图片描述
问题: ModuleNotFoundError: No module named ‘urllib2’
原因: 主要问题出现在Python版本,使用的是3版本,写的代码是2版本格式, python 3.x 以上的版本 urllib和urllib2 已经被集合到一个包里 urllib 中
解决方法: import urllib2改为import urllib.request
urllib2.Request(url)改为 urllib.request.Request(url)
urllib2.urlopen(request, context=ctx)改为urllib.request.urlopen(request, context=ctx)
(2)
在这里插入图片描述
问题: 输出为二进制字符串形式,不易读
原因: 主要问题出现在输出结果时,未将二进制字符串转换为unicode字符串
解决方法:要将二进制字符串转换成字符串,可以使用decode()方法进行解码
print(content) 改为 print(content.decode(‘utf-8’))

5.参考连接

一文带你看透手机号码归属地-阿里云开发者社区. [https://developer.aliyun.com/article/1134920?spm=a2c6h.12873639.article-detail.22.61e562eai8rX31&scm=20140722.ID_community@@article@@1134920._.ID_community@@article@@1134920-OR_rec-V_1-RL_community@@article@@1177167…]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/636690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BYC30W-600P-ASEMI代理NXP快恢复二极管BYC30W-600P

编辑:ll BYC30W-600P-ASEMI代理NXP快恢复二极管BYC30W-600P 型号:BYC30W-600P 品牌:NXP/恩智浦 封装:TO-247-2L 最大漏源电流:30A 漏源击穿电压:600V 引脚数量:2 恢复时间:2…

JavaScript:获取当前日期、星期、时间 | Data对象

文章目录 1 Date对象2 代码示例3 获取 yyyy-MM-dd 格式的日期 1 Date对象 JavaScript 中的 Date 对象表示日期和时间。Date 对象基于自 1970 年 1 月 1 日 00:00:00 UTC(协调世界时)以来的毫秒数。以下是 Date 对象的一些常用方法和属性。 getFullYear…

H5页面这样测,业务方反馈 0 Bug!

部门最近的H5相关项目挺多的,由于团队之前接触的大多是Web项目,很少涉及H5,想着给团队成员培训下,减少漏测率,于是整理了一个文档。 别说,效果还挺不错的,连着上线6个版本,都没有收…

Python3数据分析与挖掘建模(10)多因子:复合分析-交叉分析与实现示例

1. 复合分析 1.1 概述 复合分析(Factorial Analysis)是一种统计分析方法,用于研究多个因素对观测结果的影响,并探究各个因素之间的相互作用效应。 在复合分析中,研究者会选择多个因素(也称为处理变量或独…

路由器WiFi密码怎么设置?这样做可以快速设置!

案例:我在外面租房,买了一个路由器,为了不让别人使用,我想设置一个密码。但我不知道如何操作。路由器怎么设置密码?求方法分享! 如今,Wi-Fi已成为日常生活中不可或缺的一部分。为了保障个人和家…

4. LockSupport与线程中断

4.1 线程中断机制 4.1.1 从阿里蚂蚁金服面试题讲起 Java.lang.Thread下的三个方法: ● 如何中断一个运行中的线程? ● 如何停止一个运行中的线程? 4.1.2 什么是中断机制 ● 首先,一个线程不应该由其他线程来强制中断或停止,而是应…

排水管网监测,万宾排水管网在线监测系统

城市排水管网是保障城市环境卫生的重要基础设施。然而,传统的排水管网管理方式存在许多问题.通过排水管网在线监测系统的建设,可以实现对管网上窨井井盖状态、管网液位、管网流量、管网水质等数据采集,实时掌握排水管网运行状况,为…

@足智多谋的你,联网智能门锁试卷(2023高考版)正式发布!

千淘万漉虽辛苦,吹尽狂沙始到金。2023年的高考已于上周正式结束。湖南省高考成绩和录取控制分数线将在6月25日正式公布。广大学子历经一千多个日夜的努力,即将在这一天见证结果。 其实,当我们真正走出校园才发现,学无止境&#x…

敏捷项目管理

在了解敏捷项目管理之前,我们先看下敏捷和传统项目管理有什么区别。 传统项目管理:阶段式项目管理模式。 制定详细的计划和步骤,按计划执行,直到所有的计划执行全部结束。 敏捷项目管理模式,从愿景和高价值的目标出发…

V5.0.X版本 EMQX安装、卸载 以及使用

V5.0.X版本 EMQX安装、卸载 以及使用 一、卸载二、下载安装2.1 下载2.2 安装2.2.1 rpm安装2.2.2 tar安装 2.3 测试启动 三、EMQX使用 回到目录    回到末尾 EMQX为大规模分布式物联网 MQTT 消息服务器。提供高效可靠连接海量物联网设备,实时处理分发消息与事件流数…

高级信息系统项目管理师资料分享

💕💕 推荐:体系化学习Java(Java面试专题) 文章目录 1. 高级信息系统项目管理师资料分享2023年5月12日2023年4月10日2023年3月28日2023.5高项精讲 2023备考高级信息系统项目管理师资料 1. 高级信息系统项目管理师资料分…

超级实用!Python 3.6帮您提升编码效率的一个新的小特性 ——f{}

Python3.6 格式化字符串的新用法 在python 3.6格式化字符串时,增加了一个非常实用的新特性,文本以“f”或者“F”为前缀加上{},可以实现类似于%和str.format的功能,但与他们相比更加易读和不易不错。使用也非常方便,以…

3分钟教你怎样搭建属于你的私有仓库

上一节我们讲了实战项目:docker部署springboot项目,我介绍了镜像的基本操作和镜像的原理以及如何利用docker部署springboot项目,那么有了镜像,我们应该如何更好地存储和分发镜像呢?答案就是今天的主角——Docker 的镜像…

如何能够系统的自学网络安全(黑客)?

一、自学网络安全学习的误区和陷阱 1.不要试图以编程为基础的学习开始学习 我在之前的回答中,我都一再强调不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,而且实际向安全过渡后可用到的关键知识并不多 一…

ResultMap使用

要解决的问题:属性名和字段名不一致 1.1 查询为null问题 查看之前的数据库的字段名 Java中的实体类设计 public class User { private int id; //id private String name; //姓名 private String password; //密码和数据库不一样! //构造 //set/get /…

容器(第六篇)docker-harbor

什么是Harbor Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。 Harbor以 Docker 公司开源的 Registry 为基础,提供了图形管理 UI 、基于角色的访问控制(Role Based AccessContr…

常用的decap MOS电容版图介绍

常用的两种decap版图如下: 图a 图b 很多人认为decap电容就是source drain 衬底接地做下极板,poly gate接电源做上极板,这种认同是错误的。 我们先把MOS电容拆分成pmos和nmos去看。对于图a,poly没有接任何东西,pmos部…

数据库事务隔离级别

数据库事务隔离级别: 不同隔离级别引发的问题:对于同时运行的多个事务(多线程并发), 当这些事务访问数据库中相同的数据时, 如果没有采取必要的隔离机制, 就会导致各种并发问题: (问题的本质就是线程安全问题&#x…

2核4G云服务器可以支持多少个网站数量?多维度权衡

2核4G服务器可以安装多少个网站?阿腾云2核4G5M带宽服务器目前安装了14个网站,从技术角度是没有限制的,只要云服务器性能够用,想安装几个网站就安装几个网站,但是从公网带宽和CPU计算性能方面考虑,要计算网站…

6.10 线程池及gdb调试多线程

线程池概念和使用 概念: 通俗的讲就是一个线程的池子,可以循环的完成任务的一组线程集合 必要性: 我们平时创建一个线程,完成某一个任务,等待线程的退出。但当需要创建大量的线程时,假设T1为创建线程时间&…