如何对陌生号码完成号码验证与多源数据聚合:PhoneInfoga 使用指南
【免费下载链接】phoneinfogaInformation gathering framework for phone numbers项目地址: https://gitcode.com/GitHub_Trending/ph/phoneinfoga
一个陌生号码打进来,开头带着陌生的国家码,你最先想知道的无非几件事:归属地、运营商、是不是 VoIP、有没有欺诈记录。PhoneInfoga 是一个用 Go 写的号码验证与多源数据聚合框架:把同一个号码并行交给本地解析库、Numverify API、Google 搜索、OVH 电信数据库等多个数据源,再把各方结果收拢成一份报告。本文带你走完它的一条完整扫描流水线,从并行扫描的实现细节,到命令行、Web 界面和自定义插件,全部基于仓库真实代码与文档整理。
对不上的陌生号码,逐个网站查有多费劲
骚扰电话排查、客服工单核身、二手交易留的联系方式,这些场景都需要你回答同一个问题:这个号码靠不靠谱。手动查询的麻烦在于,每个平台只掌握一个维度——号码验证接口能告诉你运营商和线路类型,却查不到口碑;搜索引擎能翻出投诉记录,却验证不了号码本身是否有效。你只能拿着同一串数字反复复制粘贴,再人肉比对结果。
PhoneInfoga 把这件事收进一条命令:输入一次号码,各数据源各跑各的,结果按来源分块输出。读完全文你能拿到:
- 一次扫描从输入到报告的四步流水线
- 并行扫描的实现方式(goroutine + panic 兜底),代码不超过 15 行
- 三步跑通 CLI 与 Web 界面的可复制命令
- 用
--plugin加载自研数据源的方法
输入号码到产出报告:一次扫描的流水线
整条链路是「标准化 → 并行采集 → 汇总 → 展示」四步,核心调度在 lib/remote/remote.go 的Library结构体里:
内置扫描源一览,来自 scanners 文档:
| 扫描器 | 数据源 | 输出内容 | 是否需要配置 |
|---|---|---|---|
| Local | 内置解析库 | 国家、格式、运营商等标准化字段 | 否 |
| Numverify | 号码验证 API | 有效性、线路类型、运营商 | 需要 API 密钥 |
| Googlesearch | 搜索引擎 dork | 社媒、口碑、一次性号码的检索链接 | 否 |
| OVH | 欧洲电信号段接口 | 是否属于 OVH VoIP 号段 | 否 |
未配置的扫描源会被自动跳过,不会阻塞整条扫描。
两个值得看源码的实现点
Library.Scan 里的并行执行
Scan方法给每个扫描器开一个 goroutine,用WaitGroup等待全部结束。结果写入 map 时加写锁,任何扫描器 panic 都会被 recover 成一条错误记录,单个数据源挂掉不影响其他结果:
for _, s := range r.scanners { wg.Add(1) go func(s Scanner) { defer wg.Done() data, err := s.Run(*n, opts) if err != nil { r.addError(s.Name(), err) return } if data != nil { r.addResult(s.Name(), data) } }(s) } wg.Wait()注册环节还有个过滤钩子:lib/filter/filter.go 的Match按扫描器名字精确匹配规则,命中的直接忽略,这是「未配置则跳过」策略的落点。
先标准化,再扫描
扫描开始前,lib/number/number.go 会把+33 06 79368229这类原始输入解析成Valid、E164、Local、Country等字段。Local 解析的产物会透传给所有下游扫描器,保证各数据源查询的是同一串标准化号码,输出时再按来源分块展示。
三步在你的机器上跑通 PhoneInfoga
- 📦 获取程序(需要 Go ≥ 1.16,见 安装文档):
git clone https://gitcode.com/GitHub_Trending/ph/phoneinfoga cd phoneinfoga go build -o phoneinfoga .- 🔍 跑第一次扫描。国家码必须带上,括号和横线等字符会被自动转义,所以
+1 555-444-3333这种写法可以直接输入:
./phoneinfoga scan -n "+1 555-444-3333"- 🌐 一条命令启动 Web 界面(默认端口 5000):
./phoneinfoga serve -p 8080浏览器打开http://localhost:8080,填入国家码与号码点 Lookup,即可在页面里按来源查看验证结果:
- 🔑 可选:把
NUMVERIFY_API_KEY="..."写进当前目录的.env文件,工具会自动读取,也可以用--env-file指定其他路径,从而启用 Numverify 这类需要密钥的数据源。
加载自研扫描源与社区入口
用插件扩展自己的数据源
插件机制让企业可以把内部名单、风控库接进来:用 Go 实现 Scanner 接口,go build -buildmode=plugin编译成.so,再挂到扫描命令上:
phoneinfoga scan -n +4176418xxxx --plugin ./customscanner.so--plugin可以多次出现以同时加载多个插件,examples/plugin/ 目录里有一份可直接参考的完整示例。生产部署方面,support/docker/ 提供了 compose 编排文件,serve后映射 80 端口即可;只想暴露 REST API 的话给 serve 加--no-client。
继续深入的路径
- 文档入口:docs/getting-started/ 覆盖扫描参数、环境变量与 API 用法
- 贡献指南:docs/contribute.md 说明目录结构与构建流程
- 协议:项目采用 GNU General Public License v3.0
它的定位要心里有数:README 明确声明这是调查辅助工具,不承诺数据绝对准确,也不能实时定位号码。把它当作多源数据聚合的查询起点,而不是最终结论。
【免费下载链接】phoneinfogaInformation gathering framework for phone numbers项目地址: https://gitcode.com/GitHub_Trending/ph/phoneinfoga
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考