Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

遇到携号转网号码验证问题不知道如何验证运营商了? #14

Open
lisgroup opened this issue Jan 9, 2019 · 6 comments

Comments

@lisgroup
Copy link

lisgroup commented Jan 9, 2019

百科:携号转网

联通有些号码转网移动,用户反馈转网了。。。只能手动修改

@Garfield550
Copy link

我认为这个问题不应该用正则解决,可能你们需要其他方案。

@VincentSit
Copy link
Owner

验证真实运营商这个目前似乎是无解的,用正则是肯定搞不定了,因为没有规则。运营商好像也没有开放相关的接口,这个方向也走不通。

如果验证运营商是为了进行短信验证,我认为这个问题似乎并不需要我们考虑,保证到达是云通讯服务商要解决的问题。

如果你真的是必须要得到用户手机号码的真实运营商,目前估计只能是问用户了。

以我程序员的思维,我目前只想到了两种方案,都是需要和用户交互的。

  1. 在需要发短信的界面都加一个选项,默认选中用户输入的号码匹配的运营商,然后允许用户来确认和更正他所属的运营商。
  2. 在首次发送验证码后延迟若干时长(例如验证码发送成功 30 秒后用户都没有填写验证码)在界面下方加入一个按钮,标题假设为“没有收到短信?”,点击后执行一套逻辑(例如弹出一个确认框)来判断用户是否进行过携号转网,当前运营商是什么,重新发送短信。

这两种方案我个人倾向于第 2 种,目前携号转网率还是很低的,这种方案对用户是友好的,如果该用户没有进行携号转网的话,在正常的时间内验证了手机号,他不需要做任何额外的交互。对开发者来说只是有几率需要重新发送一次短信验证码,成本上浮一点。

image

@lisgroup
Copy link
Author

lisgroup commented Jan 9, 2019

感谢提供思路,暂时自己存储个维护的库记录下。而且调用第三方接口查询手机号归属地也不是很理想。

@Garfield550
Copy link

这个 issue 可以关闭了。

@VincentSit
Copy link
Owner

我是想着这个问题没有解决,保持开着开放讨论。那也可以先关了,以后有需要可以重新打开。

@VincentSit
Copy link
Owner

刚刚发现阿里云最近推出了一个叫号码百科的收费服务,支持查询携号转网的手机号码的运营商。因为工信部的那个携号转网数据库只开放给了包括腾讯、阿里在内的少数几个第三方公司,所以盲猜阿里的这个服务理论上肯定是准确的。

目前来说用正则验证手机号码是否合规还是可行的,但用正则判断手机号码运营商肯定是不推荐了。携号转网开放之后,除了工信部的携号转网数据库的 API 之外没有任何方案是精准的,正则也不例外,而且随着时间的推移,用正则判断的准确度会越来越低。

@VincentSit VincentSit reopened this Apr 11, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants