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

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

月光魔力鸭

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

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

这个问题肯定很多人碰到了,配合手机和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


如果对你有用的话,请赏给作者一个馒头吧 ...或帮点下页面底部的广告,感谢!!

赞赏支持
提交评论
评论信息(请文明评论)
暂无评论,快来快来写想法...
推荐
通过pm2来实现nodejs应用的集群,不过我之前没做session共享,导致.. 登录不上啊 啊啊啊,无奈,又重新对redis进行了集成。
之前在知乎上有看到,基本上都是一致的,这里提供一个nodejs版本的针对微信内dat文件进行处理恢复为图片的方法。
开始入手webpack ,直接看的官方文档和demo,对于自动刷新这部分还是希望通过express 加载插件来控制,但是文档没有提供,经过参考github上其他高玩的套路,最终整理了一个基础的配置版本。
获取文件夹内所有的文件。支持递归获取、异步或同步、过滤、返回信息处理。
当我们想实现一个自己的库或模块后,发布的话,需要发布到npm上才能下载。以下是具体步骤
今天写文章,突然发现自己常用的素材站换成了webp格式的图片.. 可惜本站还没准备加这个支持,所以准备加个webp转jpg的小功能,继续使用啦。
前段时间学习到了nodejs的net模块这部分,正好想实现一个局域网内的文件下载小demo,噔噔噔噔... 兴趣推动 ,马上搞一搞。
也不知道咋回事 ... 哈哈,忽然想研究下磁力网站,其实并不是很想懂里面的原理,只是搞不明白他们的资源是从哪里来的..很是纳闷?