前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何选一个心仪的腾讯大王卡手机号

如何选一个心仪的腾讯大王卡手机号

作者头像
IMWeb前端团队
发布2018-01-08 16:25:43
3.2K0
发布2018-01-08 16:25:43
举报
文章被收录于专栏:IMWeb前端团队IMWeb前端团队

本文作者:IMWeb yisbug 原文出处:IMWeb社区 未经同意,禁止转载

最近淘了一个支持4G的iPad Pro,考虑买一个什么类型的流量卡比较划算。对比了一下,发现还是用腾讯系的应用比较多,例如王者荣耀、腾讯视频、微信QQ等,那就选个腾讯的大王卡吧。打开微信,王卡助手,进入申请王卡的页面,发现可以自选号码,那就必须要选一个自己喜欢的号码了 。

个人偏爱0这个数字,虚无没有意义又简单好记,于是使用页面提供的搜索功能,搜索000,发现什么也没有。再尝试搜索186,也什么都没有。原来这个系统不支持搜索3位数字。好吧,继续搜索00,出来了一批没什么意义的号码,花了些时间一直点击“换一批”按钮,也没找到什么中意的号码。

突然发现,这个页面点击换一批的速度还挺快的嘛,打开chrome控制台,看了下请求。原来是有一个jsonp的请求一次性拉回来100个号码,然后随机换着显示,这不耍猴呢。我倒想看看联通的号码库到底有多少个号码可以让我选,随手写了段脚本,打开控制台执行。

代码语言:javascript
复制
var nums = []; // 存储所有的号码
var isStop = false; // 是否停止采集
function load(url, callback) {
    const xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4) { // 4 = "loaded"
            if (xmlhttp.status == 200) { // 200 = OK
                callback(xmlhttp.responseText);
            } else {
                callback('');
            }
        }
    };
    xmlhttp.open('GET', url, true);
    xmlhttp.send(null);
}
var run = () => {
    load(`https://m.10010.com/NumApp/NumberCenter/qryNum?callback=jsonp_queryMoreNums&provinceCode=51&cityCode=540&monthFeeLimit=0&groupKey=21236872&searchCategory=3&net=01&amounts=200&codeTypeCode=&searchValue=&qryType=02&goodsNet=4&_=${new Date().getTime()}`, (data) => {
        var arr = data.match(/\d{11}/g);
        if (arr && arr.length) {
            arr.forEach((item) => {
                // 去重
                if (nums.indexOf(item) === -1) {
                    nums.push(item);
                }
            });
        }
        if (nums.length < 200000 || !isStop) {
            setTimeout(() => run, 100)
        }
    });
};
run();

跑了半天,广东深圳号码库的数量大约19000个左右,再继续跑也没有增加多少。个人不喜欢带4的号码,简单剔除后,只有不到1000个号码。

代码语言:javascript
复制
nums.sort().filter((item) => item.indexOf('4') === -1).join('","')

这1000个号码里也没有选到比较喜欢的。随便选了一个号码,修改dom,把号码换成自己想要的,居然提示号码已经被占用。

原来选择号码时,还会发出一个POST请求,判断号码是否被占用。

OK,那我直接选定号段,轮询一下有哪些号码可用,不就解决问题了。打开ip138.com,找到广东深圳的号码段,选择18603000000-18603009999这个区域,再写了段脚本:

代码语言:javascript
复制
function post(num) {
    return new Promise((resolve, reject) => {
        const xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4) { // 4 = "loaded"
                if (xmlhttp.status == 200) { // 200 = OK
                    resolve(xmlhttp.responseText);
                } else {
                    resolve('');
                }
            }
        };
        xmlhttp.open('POST', "https://m.10010.com/king/kingNumBuy/occupy", true);
        xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xmlhttp.send('provinceCode=51&cityCode=540&numID=' + num + '&goodsId=511610241535');
    })
}
for (var i = 0; i < 9999; i++) {
    var str = String(i);
    if (str.length < 4) {
        str = new Array(5 - str.length).join('0') + str
    }
    var res = await post('1860300' + str)
    if (res === '"SUCCESS"') {
        console.log(res, i);
    }
}

当然,这只是初步的脚本,为了加快速度,可以多打开几个页面,并发请求。最终拿到一部分没有被占用的号码,如图:

最终,在没有被使用的号码里挑选了一个还算满意的号码。

当然,这个行为其实相当于作弊,而服务提供方也没有做好相应的防范措施,导致我能够用较低的成本就可以拉取号码信息。如果对应的接口做了IP频率限制,那这种简单的轮询方式的成本就会比较高了,可能需要着堆大量的代理服务器来跑接口。

这让我想起几年前的一个case,当时联通宽带的账号和默认密码是固定格式的,带宽只有2M和4M可选。当时新换了个房子,宽带还没有开通,于是简单写了个自动拨号的程序,跑出来几千个宽带账号密码,可以随意免费使用,并且还可以选4M的账号使用。 这个也属于运营商的漏洞,频率限制+mac绑定即可解决,但可惜他们并没有这么多。

OK,写了这么多,虽然技术含量不高,但确实有效快捷。 最后郑重声明,不鼓励大家这么做哈,所造成的一切后果和本人无关。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档