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

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

月光魔力鸭

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


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
最近由于系统需要一些数据进行测试,但是正常的流程都是下载pdf ,打印pdf,然后通过涂写答题卡,将涂写的扫描上传..太麻烦了,想做成简单点,通过程序直接生成..卡在了pdf转图片上,今天抽空找了下库,通过gm可以将pdf转为图片,起码第一步已经实现了,后边的涂学号之前已经做过了。
使用nodejs 连接mysql数据库还是很简单的,有现成的模块可以直接调用。下面介绍下 mysql 的调用
最近有客户提出了这么一个需求:微信dat文件在解码后的图片无法按照时间进行排序。 是的,解码后的文件的时间都是解码的时间,由于软件比较多,当时没做自动更新,所以在这里做一个小工具,可以将对应的解码后的图片的时间修改为微信dat文件对应的时间
最近看到知乎上一话题:微信公众号文章里的视频怎么下载?。看还是有很多人推荐啥工具啊,很是捉急,当然本次的主题也是通过程序来获取内容,但是目前来说仅仅是娱乐吧。
互联网应用经常需要存储用户上传的图片,比如facebook相册。 facebook目前存储了2600亿张照片,总大小为20PB,每张照片约为80KB。用户每周新增照片数量为10亿。(总大小60TB),平均每秒新增3500张照片(3500次写请求),读操作峰值可以达到每秒百万次
经常会遇到需要系统重启后自动执行的一些任务,在windows 上可以将对应的程序打包成service 然后自启动即可
目前了解的有两个模块可以实现二维码的模块,一个是node-qrcode ,这个算是比较大众的,不过环境比较复杂,所以...连看都没看;还有一个是小众的 qr-image ,这个比较简单,没有其他环境依赖,安装即可用,因为要实现一个简单的在线二维码生成,就先用这个试试水了
学习爬虫的时候突然有想到想做一个音乐播放小站,可以给自己或朋友听,但是音乐哪里来呢??想到自己常听的豆瓣FM,就越发的想把这些音乐都拿下来,因此有了下文通过豆瓣FM批量抓取上万首音乐,目前已经3W+。