这个项目可以做两件事:
- 生成指定城市、指定运营商的手机号字典
- 查询手机号归属地(单个/批量)
如果你是第一次用,建议直接看下面的「5分钟上手」。
python3 makephonedict.py你会看到菜单:
1. 📱 生成手机号字典(推荐)
2. 📊 查看号段库统计信息
3. 🔄 重新构建本地号段库(phone.dat -> CSV)
4. ⚡ 使用上次配置重新生成
5. 🔎 查询手机号归属地(支持批量)
6. ⚙️ 更新设置(自动更新/检查间隔)
0. 🚪 退出程序
输入 2 看统计,能看到总号段数和各运营商条数就表示数据可用。
如果统计异常或为空,输入 3 重建号段库。
输入 1,按提示走:
[0/3] 生成模式:1随机(默认) / 2顺序,输入 b 返回主菜单: 1
[1/3] 请输入要生成的手机号数量(默认1000,输入 b 返回主菜单): 20
[2/3] 请选择要生成的运营商: 2,3
[3/3] 请选择城市
[+] 请输入城市: 上海,合肥
[+] 确认使用以上城市?: y
[+] 确认开始生成?: y
完成后会在当前目录生成:
telephone_number_dict.csv
- Python 3.8+
- 项目目录下至少有:
makephonedict.pyphone_segments.csv(可通过菜单3重建)
按「模式 -> 数量 -> 运营商 -> 城市 -> 确认」流程生成。
查看当前 phone_segments.csv 的整体情况(总号段、城市数、运营商分布)。
会基于 phone.dat 重建 phone_segments.csv。
复用上次的模式、运营商、城市,你只需要改数量或直接回车。
支持两种输入方式:
- 手工输入(逗号/空格/换行分隔)
- 读取
txt/csv文件批量查询
可在菜单里配置:
- 自动更新开关
- 更新检查间隔(小时)
1随机(默认)2顺序
支持序号多选,比如:
22,31-3all(全选)
两种方式:
- 直接输入:
成都,上海,合肥 - 输入
?进入搜索后按序号选
输入后程序会先回显识别结果,再让你确认,避免误选。
生成结果写入 telephone_number_dict.csv,表头:
序号,手机号,手机号归属地,命中号段[+] 请选择方式(1手工输入,2读取文件,默认1): 1
[+] 请输入手机号: 13008100000 19999999999
[查询结果]
- 13008100000: 成都中国联通
- 19999999999: 未命中本地号段库
[+] 请选择方式(1手工输入,2读取文件,默认1): 2
[+] 请输入文件路径(支持 txt/csv): ./query_phones.txt
[*] 已从文件读取 300 个待查询号码。
支持导出查询结果 CSV:
[+] 是否导出查询结果到CSV?(y确认,其他不导出): y
[+] 请输入导出文件路径(默认 query_result_YYYYmmdd_HHMMSS.csv):
导出列:
手机号,手机号归属地,查询状态用于控制更新策略:
{
"auto_update": true,
"check_interval_hours": 24
}说明:
auto_update: 是否自动检测更新check_interval_hours: 检查间隔(小时,>=0)
更新检测元数据仅在内存中,不落盘。
运行过程中自动创建,用于“上次配置快速生成”。
必须包含表头:
segment,province,city,isp
1301234,四川,成都,中国联通
1335678,四川,成都,中国电信
1394321,四川,成都,中国移动字段要求:
segment:7位数字isp支持值:中国移动中国联通中国电信中国电信虚拟运营商中国联通虚拟运营商中国移动虚拟运营商
- 先输入更完整城市名(如
上海而不是上) - 或在城市步骤输入
?使用搜索选择
- 在支持回退的输入步骤输入
b
- 直接重新运行
python3 makephonedict.py即可
- 删除
last_run_config.json后重启程序