在线接受短信验证码进行识别

在线接受短信验证码进行识别

月光魔力鸭

2019-11-19 09:04 阅读 894 喜欢 2 在线短信 短信验证

当我们做爬虫或其他的一些应用的时候,如果需要一些短信验证,但是又没有那么多手机号,又不能放人在那里一直输入的时候?怎么办?

这个问题肯定很多人碰到了,配合手机和app将短信提交到服务器,然后开放出来供各位使用,那么说起来肯定是收费的,也肯定会有无私的同学免费贡献出来。

前段时间,抓数据的时候就用到了短信验证码,找到一个还算可以的免费站点。

网站上大约一百多个短信接收号码,如果你还需要大量的,那么这里肯定不适合你了,建议找个收费的测试下。

说道这里应该就完了,不过后边是使用,一般都是代码啥的,没啥实际意义,简单记录,仅供参考。

抓取短信号码和地址
//自动抓取网站上的可用手机号码并进行存储 更新
let startPage = 1;
let url = `https://www.pdflibr.com/?page=`
let host = `https://www.pdflibr.com`;
let axios = require('axios');
let cheerio = require('cheerio');
let async = require('async');

let query = require('sqlquery-tool');
let log = require('../util/log');

//抓取单页手机号码
function fetch(url){
    return axios.get(url)
    .then(rs=>{
        let html = rs.data;
        let $ = cheerio.load(html);
        //查找是否存在手机列表信息
        let $sms = $('.sms_content');
        if($sms.find('.sms-number-list.row.show-grid').length == 0){//没有数据
            return null;
        }else{
            //找到符合条件的手机号码和地址信息
            let phoneList = [];
            let $list = $sms.find('.sms-number-list.row.show-grid');
            $list.each((i,item)=>{
                const isChina = $(item).find('picture img').attr('src').indexOf('china') > -1;
                const phoneNo = $(item).find('.number-list-phone_number h3').text().replace('+86','');
                const isUse = $(item).find('.number-list-info').html().trim() == '' || $(item).find('.number-list-info p:nth-child(2)').text().indexOf('小时') > -1 ? false : true;
                const phoneUrl = host + $(item).find('.sms-number-read a').attr('href');
                if(isChina && isUse){
                    phoneList.push({
                        phoneNo : phoneNo,
                        phoneUrl : phoneUrl
                    });
                }
            })
            return phoneList;
        }
    })
}

async function start(){
    //执行获取,从第一个开始,一直增加
    try{
        let startGo = true;
        let allArr = [];
        while(startGo){
            let phoneList = await fetch(url+startPage);
            console.log(phoneList);
            if(phoneList == null){
                startGo = false;
            }else{
                //添加
                startPage ++ ;
                allArr = allArr.concat(phoneList);
            }
        }
        //直到所有的页面全部抓完
        //开始进行更新/或插入/等等
        for(let info of allArr){
            let hasList = await query.search('phonelist').where({phoneNo :  info.phoneNo}).list();
            if(hasList == null || hasList.length == 0){
                let rs = await query.search('phonelist').insert(info);
            }
        }
    }catch(e){
        console.log(e);
        log('手机号码',`抓取失败:${e||'无'}`)
    }
}

module.exports = start;
根据手机号查找验证码
//获取短信验证码
let query = require('sqlquery-tool');
let axios = require('axios');
let cheerio = require('cheerio');
let log = require('../util/log');

module.exports = function(phone,datetime){
    return query.search('phonelist').where({
        phoneNo : phone
    }).list()
    .then(rs=>{
        let pageUrl = rs[0].phoneUrl;
        return axios.get(pageUrl);
    })
    .then(rs=>{
        let html = rs.data;
        let $ = cheerio.load(html);
        let txtArr = [];
        $('.sms_content:nth-child(4) table tr').each(function(i,item){
            var itemText = $(item).find('td:nth-child(3)').text();
            var timestr = $(item).find('td:nth-child(4)').text();

            let d = new Date(timestr.trim());
            let time = d.getTime();
            if(datetime <  time){
                txtArr.push({
                    txt : itemText,
                    time : d.getTime()
                });
            }
        })
        //查找是否存在
        var phoneCode = '',getRs = false;
        for(let i=0;i<txtArr.length;i++){
            let txt = txtArr[i].txt;
            let time = txtArr[i].time;
            if(txt != '' && txt.indexOf('关键词A') > -1 && txt.indexOf('关键词B') > -1 ){
                phoneCode = txt.trim().substring(txt.trim().length - 6);
                getRs = true;
                log('短信验证码',`获得短信验证码:${phoneCode}`)
                break;
            }
        }
        return {
            success : getRs,
            result : phoneCode
        }
    })
}

最近的文章确实是有点水了,不过一直在忙项目,还没时间写..望见谅!不过首页图还是不错的,凑活凑活看看图吧 。

转载请注明出处: https://chrunlee.cn/article/sms-online-valid.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
关于js的编译和压缩,之前做过一个小工具了,主要就是自己项目成员大都没有这部分的技能,导致发布的时候总需要去编译压缩下.. 最终做了个命令行小工具.. 问题不在这里,前一阵子做压缩的时候发现压缩后竟然是undefined.最终才发现是es6的语法问题。
今天想在服务器上跑下自己自动签到的程序,需要安装puppeteer ,结果出错。 permission denied, mkdir '/root/.nvm/versions/node/v9.11.1/lib/node_modules/
也不知道咋回事 ... 哈哈,忽然想研究下磁力网站,其实并不是很想懂里面的原理,只是搞不明白他们的资源是从哪里来的..很是纳闷?
从豆瓣转到网易云后,发现了不少好听的歌曲,然鹅..当我想把这些歌拿下来扔车上听的时候发现竟然不允许下载..能听不能下?这不科学,作为一名程序猿,必然要迎难而上啊.
目前了解的有两个模块可以实现二维码的模块,一个是node-qrcode ,这个算是比较大众的,不过环境比较复杂,所以...连看都没看;还有一个是小众的 qr-image ,这个比较简单,没有其他环境依赖,安装即可用,因为要实现一个简单的在线二维码生成,就先用这个试试水了
由于只是做个测试,这里使用了expresss简单搭建了个后台服务,提供文件断点下载。
学习爬虫的时候突然有想到想做一个音乐播放小站,可以给自己或朋友听,但是音乐哪里来呢??想到自己常听的豆瓣FM,就越发的想把这些音乐都拿下来,因此有了下文通过豆瓣FM批量抓取上万首音乐,目前已经3W+。
今天写文章,突然发现自己常用的素材站换成了webp格式的图片.. 可惜本站还没准备加这个支持,所以准备加个webp转jpg的小功能,继续使用啦。