基于 Google 官方 phonenumbers 库,提供两个脚本:
-
phone_extract.py:批量提取中国手机号前7位(号段前缀)到“运营商 + 属地”的映射关系,并输出为phone_location_table.yaml -
phone_query.py:加载映射表后,交互式查询用户输入的7位号段 -
注:进行提取和查询需要手机号码与IP属地映射表原始文件,本仓库提供一个示例文件
86_zh, 用户也可以自行通过逆向工程提取出其他映射表文件进行提取和查询
.
├── 86_zh # 号码与IP属地映射表原始文件
├── phone_extract.py
├── phone_query.py
├── phone_location_table.yaml # 提取后生成
├── phone_location_table.pkl # 查询脚本自动生成缓存
└── README.md
- Python 3.10+
- pip
所需依赖:
- phonenumbers
- pyyaml
git clone <你的仓库地址>
cd <仓库目录>- 打开你的 GitHub 仓库页面
- 点击
Code->Download ZIP - 解压后进入项目目录
pip install phonenumbers pyyaml用途:
- 扫描
1300000到1999999的7位号段 - 调用
phonenumbers提取归属地和运营商 - 生成
phone_location_table.yaml
运行:
python phone_extract.py输出:
phone_location_table.yaml(主数据文件)
说明:
- 全量提取耗时较长,脚本会打印进度信息。
用途:
- 启动后监听用户输入
- 输入7位号段(例如
1300010) - 返回对应运营商和属地信息
运行:
python phone_query.py交互示例:
[*]正在加载 YAML 映射表(首次可能较慢)...
[*]正在建立本地缓存...
[*]手机号前7位查询已启动。
[*]请输入7位手机号前缀(示例: 1300010),输入 q 或 quit 退出。
> 1300010
号段: 1300010
运营商: 中国联通
IP属地: 北京市
> q
[*]已退出查询。
说明:
- 首次加载 YAML 可能较慢,属于正常现象。
- 程序会自动生成
phone_location_table.pkl缓存,后续启动更快。
- 通过逆向获取映射表文件(如
86_zh) - 先运行
phone_extract.py生成或更新phone_location_table.yaml - 再运行
phone_query.py进行交互查询
通常不是崩溃,而是在首次解析大型 YAML 文件。
处理建议:
- 等待首次加载完成
- 确认目录下已生成
phone_location_table.pkl - 后续启动会优先走缓存,速度明显提升
请先运行:
python phone_extract.pyphone_query.py 只接受 7位纯数字(如 1380013)且接受格式仅为 3位运营商号码 + 4位地区号码,暂不支持查询其他格式的号码。
中国大陆手机号分析:https://www.cnblogs.com/slayedxx/p/19844865
从手机内部提取电话号码与IP属地映射表:https://www.cnblogs.com/slayedxx/p/19858201
- 本仓库提供的代码、文档和相关文章仅供学习、研究与技术交流使用。
- 禁止将本项目用于任何违反法律法规、侵犯他人隐私或其他不当用途。
- 本项目不提供任何形式的商业担保,不保证数据的完整性、准确性、实时性与适用性。
- 因使用本项目造成的任何直接或间接损失,项目作者与贡献者不承担责任。
- 使用者应自行确认数据来源的合法性,并遵守相关平台协议与当地法律法规。