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

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

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

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

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

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

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

抓取短信号码和地址
  • 依赖 async axios cheerio sqlquery-tool
//自动抓取网站上的可用手机号码并进行存储 更新
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;
根据手机号查找验证码
  • 依赖 sqlquery-tool axios cheerio
//获取短信验证码
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
        }
    })
}

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

相关文章
收集的几个国外在线接收短信验证码的网站
有时候,在某些平台上,我们可能需要注册一个临时账号。而注册过程中又需要输入手机号进行短信验证,但是我们又不想泄露隐私,所以这时候一些临时短信接收服务便派上了用场。以下收集的网站都是在线提供一些国外手机号,当你需要进行短信验证的时候(比如注册某个账号),这时你可以使用网站上的提供手机号进行接码,网站上会公开短信的所有内容。
41801 0
|
3月前
|
搜索推荐 安全 网络协议
邮件批量发送:智能筛选与高效
群发邮件可通过电子邮件营销工具、自建服务器、第三方服务或营销自动化平台实现。电子邮件营销工具如Zoho Campaigns、Mailchimp等简化了邮件设计与发送流程,并提供数据分析;自建邮件服务器则需技术支撑,但能高度定制;第三方服务如Amazon SES、SendGrid易于使用;营销自动化平台如HubSpot整合多渠道营销。企业应根据技术能力、预算和需求选择合适方法,注重内容个性化和相关性,优化策略与流程。
33 0
|
6月前
|
安全 API 数据安全/隐私保护
邮箱API提取邮件验证码技巧
本文介绍了如何高效提取和管理邮件验证码,涉及邮箱API原理、选择合适API、正确参数调用、安全处理、异常处理、应用场景及优化方法。注意遵守法律法规,保障用户隐私安全。
|
6月前
|
监控 小程序 安全
社区每周丨支付有礼支持引导用户收藏小程序及人脸认证接口更新(8.7-8.11)
社区每周丨支付有礼支持引导用户收藏小程序及人脸认证接口更新(8.7-8.11)
176 11
09 公众号开发 - 回复用户语音消息识别代码
09 公众号开发 - 回复用户语音消息识别代码
56 0
|
JavaScript API 容器
手机短信验证码登录功能的开发实录(机器识别码、短信限流、错误提示、发送验证码倒计时60秒)
手机短信验证码登录功能的开发实录(机器识别码、短信限流、错误提示、发送验证码倒计时60秒)
295 1
|
Java API 语音技术
语音通知短信 API:一种新型的信息传递方式
实现语音通知短信的功能,我们需要借助语音通知短信的 API 接口,语音通知短信 API 是一种将文字转换为语音并通过电话呼叫或发送语音消息的API。
442 0
语音通知短信 API:一种新型的信息传递方式
|
JavaScript 前端开发 iOS开发
Python 模仿按键精灵,批量验证和添加手机号码为企业微信账号的联系人
Python 模仿按键精灵,批量验证和添加手机号码为企业微信账号的联系人
350 0
|
开发工具
KgCaptcha 语序识别验证码请求日志记录
请求日志记录是一个非常普遍的功能,几乎可以涉及到所有的项目。所以一个方便使用的日志记录,将会方便日后的管理,于是我通过使用 KgCaptcha 在我的验证码项目中实现。
KgCaptcha 语序识别验证码请求日志记录