怎么判断电话号码是否是虚拟号

系统出现薅羊毛的,每天注册几个新号来领取新人优惠券,号码是属于虚拟号的,请问这种应该怎么屏蔽掉

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

中国移动号段:134、135、136、137、138、139、147、148、150、151、152、157、158、159、178、182、183、184、187、188、198、1440、165、1703、1705、1706。其中:1703、1705、1706、165、为虚拟运营商专属中国移动号段,

中国联通号段:166,167,130,131,132,155,156,185,186,175,176,145,1704,1707,1708,1709,171。其中:1704、1707、1708、1709、171、167、为虚拟运营商专属中国联通号段。

中国电信号段:133、199、191、173、162、153、177、180、181、189、1700、1701、1702。其中:1700、1701、1702、162为虚拟运营商专属中国电信号段。 目前虚拟运营商号段为170、171、162、165、167,

1年前 评论
LearnMore (楼主) 1年前
九霄道长 11个月前
小李世界 11个月前
创梦流浪人 11个月前
讨论数量: 27

中国移动号段:134、135、136、137、138、139、147、148、150、151、152、157、158、159、178、182、183、184、187、188、198、1440、165、1703、1705、1706。其中:1703、1705、1706、165、为虚拟运营商专属中国移动号段,

中国联通号段:166,167,130,131,132,155,156,185,186,175,176,145,1704,1707,1708,1709,171。其中:1704、1707、1708、1709、171、167、为虚拟运营商专属中国联通号段。

中国电信号段:133、199、191、173、162、153、177、180、181、189、1700、1701、1702。其中:1700、1701、1702、162为虚拟运营商专属中国电信号段。 目前虚拟运营商号段为170、171、162、165、167,

1年前 评论
LearnMore (楼主) 1年前
九霄道长 11个月前
小李世界 11个月前
创梦流浪人 11个月前

中国移动号段:134、135、136、137、138、139、147、148、150、151、152、157、158、159、178、182、183、184、187、188、198、1440、165、1703、1705、1706。其中:1703、1705、1706、165、为虚拟运营商专属中国移动号段,

中国联通号段:166,167,130,131,132,155,156,185,186,175,176,145,1704,1707,1708,1709,171。其中:1704、1707、1708、1709、171、167、为虚拟运营商专属中国联通号段。

中国电信号段:133、199、191、173、162、153、177、180、181、189、1700、1701、1702。其中:1700、1701、1702、162为虚拟运营商专属中国电信号段。 目前虚拟运营商号段为170、171、162、165、167,

1年前 评论
LearnMore (楼主) 1年前
九霄道长 11个月前
小李世界 11个月前
创梦流浪人 11个月前
gongmeng

propaganistas/laravel-phone
github.com/Propaganistas/Laravel-P...
可以去看看这个扩展包

1年前 评论

判断手机号是否是虚拟号的方式比较复杂,因为虚拟号码的前缀和号码段比较多,可能会有遗漏或误判的情况,比较简单的就用正则匹配

$phone_number = '13912345678';

// 手机号码前三位
$prefix = substr($phone_number, 0, 3);

// 判断前三位是否为虚拟号码前缀
$is_virtual = in_array($prefix, ['170', '171', '172', '173', '174', '175', '176', '177', '178', '162', '165']);

if ($is_virtual) {
    echo '该手机号码是虚拟号码。';
} else {
    echo '该手机号码不是虚拟号码。';
}

想要更靠谱的可以使用第三方提供的手机号码归属地查询接口

1年前 评论

电信用户:我惹你啦?177不爽啊

1年前 评论
汪阿浠 11个月前

也不完全正确,因为有很多虚拟小号的号码,他们的号段都是常规号段,单独从号段上很难区分出来,像接码平台的话,他们可以过滤掉虚拟号段,大批常规号段还是会继续薅(而且是主力),这种基本上就要靠大数据api接口来判断了,综合用户的IP信息,号码信息,设备信息,得出一个风险值,在判断是否发放优惠。

11个月前 评论
LearnMore (楼主) 11个月前

你需要知道虚拟号的号段,比如 165xxxx,然后判断号段不让注册不就行了

1年前 评论

看太急看错了,抱歉。

1年前 评论
LearnMore (楼主) 1年前
qufo (作者) 11个月前

用号码段,容易误伤,毕竟有些人的号码就是在虚拟号码段。

不想花钱方案:想领取新人优惠券必须绑定微信,微博,QQ等其中一方的账户,来提升薅羊毛的门槛

花钱的话:阿里云有个号码百科API,help.aliyun.com/document_detail/43... 这里面的手机号码状态检测API 可以检测号码是否正常

11个月前 评论
orange1994

什么系统,我也想薅羊毛

11个月前 评论

发验证码不行吗

11个月前 评论
LearnMore (楼主) 11个月前

注册的时候接上阿里云的短信就好了,虚拟号接收不了阿里云的短信

11个月前 评论

昨天刚解决个bug,就是用的阿里云的查手机号运营商信息的接口.leader好像说挺便宜的

10个月前 评论
chowjiawei

这是虚拟运营商的号码 不是虚拟的号

我就是在用1707虚拟运营商的号码 很多软件都可以让我用 只有极少部分 不让用 无语了 不把这些用户当真实用户

10个月前 评论

200元/1000w次,特别注意有效期1年 market.aliyun.com/products/5712600...

10个月前 评论
laravelphp_game (作者) 10个月前

要是怕薅羊毛,也可以试着提高门槛啊,如注册后还要后续的A操作(实名认证等),或者让领,用的时候需要认证之类

10个月前 评论
LearnMore (楼主) 10个月前

对接个第三方的检测接口就好了,几分钱一个也不贵

9个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!