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

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

月光魔力鸭

2019-11-19 09:04 阅读 1783 喜欢 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


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
通过node-xlsx模块读取excel和写入
前段时间做了个微信小程序反编译的小东西,不过因为功能不全,没加分包处理,正好处理下加上,又考虑到后续可能的更新情况,准备上手增加下更新功能。
最近家里正在装修,实在是不知道怎么做,之前看好好住APP上有不少设计的图,部分还挺好看。。就去看了下有没有WEB端,结果还真有,就有了下文,我抓了几万张图片,然后根据关键字进行分类,从里面找心仪的设计。
尝试下使用nodejs下开源图像识别库来识别图像状态。
今天写文章,突然发现自己常用的素材站换成了webp格式的图片.. 可惜本站还没准备加这个支持,所以准备加个webp转jpg的小功能,继续使用啦。
目前了解的有两个模块可以实现二维码的模块,一个是node-qrcode ,这个算是比较大众的,不过环境比较复杂,所以...连看都没看;还有一个是小众的 qr-image ,这个比较简单,没有其他环境依赖,安装即可用,因为要实现一个简单的在线二维码生成,就先用这个试试水了
当我们想实现一个自己的库或模块后,发布的话,需要发布到npm上才能下载。以下是具体步骤
在使用puppeteer 跳转窗口的时候,发现waitForNavigator 并不起作用,最后找到通过browser 获得page 并继续操作。