ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

PhoneInfoga 电话号码格式规范:E.164 输入要求与多格式指纹搜索原理

PhoneInfoga 电话号码格式规范:E.164 输入要求与多格式指纹搜索原理 PhoneInfoga 电话号码格式规范E.164 输入要求与多格式指纹搜索原理【免费下载链接】phoneinfogaInformation gathering framework for phone numbers项目地址: https://gitcode.com/GitHub_Trending/ph/phoneinfogaPhoneInfoga 作为国际电话号码信息收集框架其所有扫描能力都建立在一个前提之上输入号码的格式必须正确。本文围绕 PhoneInfoga 官方文档中的电话号码格式化规范展开讲清工具接受的输入格式E164 与国际格式、E.164 结构的逐段含义并结合 lib/number 包源码说明这些格式是如何被清洗、解析成国家码、本地号、区号等字段以及这些字段如何被 Google dork 扫描器用于多格式足迹搜索帮助你理解“为什么号码要这样写”以及“写错会怎样”。工具接受的输入格式PhoneInfoga 文档明确说明工具只接受 E164 格式和国际格式International format作为输入。文档中给出了同一号码在不同体系下的写法对照格式体系示例法国号码是否被 PhoneInfoga 接受E1643396360XXXX是International33 9 63 60 XX XX是National本国拨号格式09 63 60 XX XX否RFC3966tel:33-9-63-60-XX-XX否从美国拨出的国际格式011 33 9 63 60 XX XX否需要注意CLI 的-n参数描述也与此一致。在 cmd/scan.go 中注册扫描命令时对该参数标注为The phone number to scan (E164 or international format)并在扫描前先用number.IsValid()校验输入cmd/scan.go不合法输入会直接以given phone number is not valid报错退出。E.164 格式的结构拆解E.164 格式由四部分组成加号国际接入前缀国际国家拨号代码International Country Calling code本地区号Local Area code本地号码Local Phone number以美国号码(415) 555-2671为例本地格式中区号与号码的关系为同一号码写成 E.164 格式即为14155552671其各段含义为英国以及很多其他国家在本地拨号时需要在用户号前加一个前导0。使用 E.164 格式时这个0通常需要去掉。例如英国号码本地格式020 7183 8750对应的 E.164 格式为442071838750注意020变成了20前导零被剥离。源码视角FormatNumber 如何清洗输入从源码结构看PhoneInfoga 之所以能同时容忍 E164 与带空格、连字符的国际格式是因为所有输入都会先经过 lib/number/utils.go 中的FormatNumber清洗// FormatNumber formats a phone number to remove // unnecessary chars and avoid dealing with unwanted input. func FormatNumber(n string) string { re : regexp.MustCompile([_\W]) number : re.ReplaceAllString(n, ) return number }它用正则[_\W]删掉所有非字母数字字符空格、连字符、点、括号等因此1 (315) 284-1580会被归一化为13152841580。lib/number/utils_test.go 中的测试用例验证了这两组转换。Web 前端也实现了同样的清洗逻辑见 web/client/src/utils/index.ts 中的formatNumber说明这是前后端一致的输入约定。国家码的识别则由 lib/number/utils.go 中的ParseCountryCode完成它先调用FormatNumber归一化再通过 ISO 3166 库将 E.164 数字反查为 ISO 国家代码如33 679368229→FR1 315-284-1580→US甚至不带加号的4566118311也能识别出DK这正是 lib/number/utils_test.go 覆盖的三种情况。而IsValid函数lib/number/utils.go在校验时要求清洗后的字符串完全由数字组成因此含字母的输入如P1 315-284-1580A会直接被判为非法。Number 结构体一次解析产出四种格式清洗与解析完成后lib/number/number.go 中的NewNumber借助github.com/nyaruka/phonenumbers库一次性产出号码的多种形态存入Number结构体lib/number/number.goE164phonenumbers.Format(num, phonenumbers.E164)如33678342311International对 E164 再做FormatNumber去掉得到纯数字国际格式33678342311Localphonenumbers.Format(num, phonenumbers.NATIONAL)生成的本国格式如06 78 34 23 11RawLocal对 Local 再做FormatNumber清洗得到0678342311附加字段CountryCode国家码、CountryISO 国家代码、Carrier首选国内运营商代码、Valid号码是否有效。lib/number/number_test.go 中的测试用例给出了两个具体解析结果输入33678342311法国号码得到Country: FR、Local: 06 78 34 23 11、E164: 33678342311输入15552221212美国号码555 号段无效则Valid为false但格式解析仍成功。这解释了文档要求“E164 或国际格式”的原因NewNumber内部会先拼上前缀 FormatNumber(number)再交给 phonenumbers 库解析纯本地格式如09 63 60 XX XX缺少国家码解析结果不可靠故被排除。为什么“自定义格式”对搜索至关重要原文档 Custom formatting 一节指出了一个实际问题号码在网页上留下的足迹footprints往往不是你输入的 E164 写法。例如你搜索15417543010就找不到把它写作(541) 754–3010的页面。文档的建议是应使用该号码所属国家的人在网上分享号码时通常使用的格式。例如法国人在线写作习惯为06.20.30.40.50或06 20 30 40 50美国号码最常见的是543-456-1234。PhoneInfoga 在实现上正是通过Number结构体的多字段组合来自动覆盖这些格式变体。以 Google 搜索扫描器 lib/remote/googlesearch_scanner.go 为例General 类 dork 同时使用International、E164、RawLocal、Local四种格式做InText或条件lib/remote/googlesearch_scanner.go相当于自动搜索33678342311、33678342311、0678342311、06 78 34 23 11等写法Social media、Disposable providers、Reputation 等分类的 dork 也普遍是InText(number.International).Or().InText(number.E164).Or().InText(number.RawLocal)的三格式组合lib/remote/googlesearch_scanner.go。换句话说文档中列举的大量“自定义格式示例”对应的是网页端人肉搜索时的搜索词建议而框架本身则把其中最主要的几种数字形态固化进了 dork 生成逻辑。文档给出的示例清单如下美国号码US-based自定义格式示例1 618-555-xxxx(1)618-555-xxxx1/618-555-xxxx(618) 555xxxx(618) 555-xxxx(618) 555.xxxx(618)555xxxx(618)555-xxxx(618)555.xxxx欧洲号码以法国为例自定义格式示例3301 86 48 xx xx33018648xxxx33018 648 xxx x(0033)018648xxxx(33)018 648 xxx x33/018648xxxx(0033)018 648 xxx x33018-648-xxx-x(33)018648xxxx(33)01 86 48 xx xx33/018-648-xxx-x33/01-86-48-xx-xx3301-86-48-xx-xx(0033)01 86 48 xx xx33/01 86 48 xx xx(33)018-648-xxx-x(33)01-86-48-xx-xx(0033)01-86-48-xx-xx(0033)018-648-xxx-x33/018 648 xxx x在 CLI 与 API 中按规范传参了解格式规范后实际使用时只需记住一条传入 E164 或国际格式数字串特殊字符会被自动清洗。CLI 扫描命令cmd/scan.gophoneinfoga scan -n 1 555-444-2222 # 等价于 phoneinfoga scan -n 15554442222-n参数支持重复传入-D禁用指定扫描器、--plugin加载插件扫描器、--env-file指定环境变量文件详见 docs/getting-started/usage.md。REST API 侧POST /v2/numbers处理器 web/v2/api/handlers/numbers.go 使用binding:number,required约束请求体意味着API 输入必须是纯整数不带、空格或符号绑定失败时返回Invalid phone number: please provide an integer without any special chars。成功后响应体会返回与Number结构体同构的字段valid、rawLocal、local、e164、international、countryCode、country、carrier可视为服务端帮你完成的“格式转换”结果供你在后续手工搜索时挑选合适写法。小结PhoneInfoga 的号码格式化规范可以归纳为三点其一输入只认 E164 与国际格式FormatNumber会把所有非数字字符含前导剥离后再解析其二NewNumber一次解析产出 E164、International、Local、RawLocal 四种形态及国家、国家码、运营商信息其中国家本地格式的前导零如英国020→20遵循 E.164 惯例被剥离其三多格式输出不仅是展示需要更是 dork 扫描的输入基础——搜索命中与否取决于你或扫描器是否使用了目标国家网民实际使用的号码写法。掌握这些规则后你既能正确使用phoneinfoga scan -n也能理解各扫描器结果中 dork 搜索词的构成逻辑。【免费下载链接】phoneinfogaInformation gathering framework for phone numbers项目地址: https://gitcode.com/GitHub_Trending/ph/phoneinfoga创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表