作为一只爬虫,如何科学有效地处理短信验证码?(安卓短信软件)

时间:2022-10-15 19:08:31来源:网络整理
导读OK,配置完成之后,然后我们给该手机尝试发送一个验证码,内容如下:当然以上只针对于一部手机的情况,如果我们有大量的手机和手机卡,我们可以实现手机的群控处理,比如

之前我们了解了一些验证码的处理流程,比如图形验证码、滑块验证码、点击验证码等,但是这些验证码有一个共同的特点,就是这些验证码的处理流程通常只有要求可以在PC上完成。比如PC上出现图形验证码,直接在PC上验证通过就好了。识别和验证输入的所有过程都在 PC 上完成。

但是还有一个验证码和这个案例不同,那就是手机验证码。比如需要在PC端输入手机号,然后需要向手机发送短信验证码,然后在PC端输入收到的验证码即可。得到正式认可的。

在这种情况下,我们如何使这个过程自动化?

发送和接收验证码

一般来说,我们的自动化脚本会在PC上运行,比如打开一个网页,然后模拟输入手机号,然后点击获取验证码,这时就需要输入验证码了。打开页面,输入手机号,点击获取验证码等。我们可以很方便的自动化这个过程,但是验证码是发到手机上的,怎么传到PC上呢?

为了实现整个收发验证码的流程自动化,我们此时想要完成的是——手机收到短信后,可以自动将短信转发到某个地方,比如远程服务器或者直接到电脑。,在PC上,我们可以通过一些方法获取短信并提取验证码的内容,然后自动填写验证码。

这里的关键部分实际上是如何完成这两个步骤:

这两个步骤缺一不可,都需要在手机上完成。

解决办法自然很简单。我们以安卓手机为例。如果你有安卓开发经验,这两个功能其实实现起来还是挺简单的。

注意:这里只简单介绍基本思路,不会详细介绍具体代码实现。如果你有兴趣,你可以自己试试。

首先,如何监控手机收到的短信?

在Android开发中,整体分为三个必要的环节:

android:name="android.permission.RECEIVE_SMS">

android:name=".receive.SmsReciver">android:priority="999">android:name="android.provider.Telephony.SMS_RECEIVED"/>

publicclassSmsReciverextendsBroadcastReceiver{@Override

安卓短信软件_电话短信轰炸安卓软件_安卓手机自带短信软件主题

publicvoidonReceive(Contextcontext,Intentintent){Bundlebundle=intent.getExtras();SmsMessagemsg=null;if(null!=bundle){Object[]smsObj=(Object[])bundle.get("pdus");for(Objectobject:smsObj){msg=SmsMessage.createFromPdu((byte[])object);Log.e("短信号码",""+msg.getOriginatingAddress());Log.e("短信内容",""+msg.getDisplayMessageBody());Log.e("短信时间",""+msg.getTimestampMillis());}}}

这样,我们就实现了短信的接收。

收到短信后,发送自然就很简单了。比如服务器提供了一个API,我们可以通过请求这个API来发送数据。这可以通过Android的一些HTTP请求库来实现,比如OkHttp构造一个HTTP请求。就是这样,这里我不再赘述。

但总的来说,整个过程实际上需要一些开发成本。这么常用的功能有现成的解决方案吗?自然是有的。我们可以依赖一些开源实现,而不必重新发明轮子。

这里介绍一款开源软件SmsForwarder,中文翻译为SMS Forwarder。其 GitHub 仓库地址为:github.com/pppscn/SmsForwarder。

其基本流程架构图如下:

电话短信轰炸安卓软件_安卓短信软件_安卓手机自带短信软件主题

架构图非常清晰。SmsForwarder可以对接收短信的事件进行监听和监听,获取短信的来源号码、接收卡槽、短信内容、接收时间等,然后通过一定的规则转发,支持转发到邮箱和微信。群机器人、企业微信、Telegram 机器人、Webhook 等。

比如我们可以这样配置一个规则,如图:

电话短信轰炸安卓软件_安卓手机自带短信软件主题_安卓短信软件

安卓短信软件_电话短信轰炸安卓软件_安卓手机自带短信软件主题

比如手机号码符合一定的规则,就会转发到QQ邮箱。例如,如果内容中包含“报警”,则会转发到阿里的企业邮箱。例如,如果内容以“test”开头,它将被发送到一个名为 TSMS 的 webhook。

其中QQ邮箱和阿里企业邮箱是我们配置的发件人,属于邮箱类型。TSMS也是sender,属于Webhook类型,如图:

安卓手机自带短信软件主题_电话短信轰炸安卓软件_安卓短信软件

我们也可以点击添加发件人按钮添加对应的发件人,比如添加邮箱的发件人,我们可以在SMTP配置下设置发送邮箱、SMTP服务器、SMTP端口、授权密码等:

电话短信轰炸安卓软件_安卓手机自带短信软件主题_安卓短信软件

设置Webhook安卓短信软件,我们可以选择是GET还是POST请求,然后填写对应的URL、key等:

设置转发规则页面如图:

安卓短信软件_安卓手机自带短信软件主题_电话短信轰炸安卓软件

比如这里我们可以选择匹配卡槽、匹配字段、匹配模式,也可以配置正则来设置匹配值。在这里,我们配置以4566结尾的手机号,进行一定的发送操作。发送给钉钉这个发件人。

实际演示

例如,让我们在这里尝试一下。这里我们使用Flask编写一个API,实现如下:

fromflaskimportFlask,request,jsonifyfromloguruimportloggerapp=Flask(__name__)@app.route('/sms',methods=['POST'])defreceive():

sms_content=request.form.get('content')logger.debug(f'received {sms_content}')# parse content and save to db or mqreturnjsonify(status='success')if__name__=='__main__':app.run(debug=True)

代码很简单,这里设置一个路由,接收POST请求,然后读取Request表单的内容,其中content就是短信的详细内容,然后打印出来。

我们将代码保存为 server.py 并运行它:

python3 server.py

运行结果的输出如下:

 * Debug mode: on * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger PIN: 269-657-055

为了方便测试,我们可以使用 Ngrok 将服务暴露给公网:

ngrok http 5000

注意:ngrok可以很方便的将任何非公网服务暴露给公网访问,并配置一个特定的临时二级域名,但是一个域名是有时间限制的,所以一般只用于测试。请在试用前安装 Ngrok。有关详细信息,请参阅 ngrok.com/。

电话短信轰炸安卓软件_安卓手机自带短信软件主题_安卓短信软件

运行后可以看到输入结果如下:

Session Status online Session Expires 1 hour, 59 minutes Update update available (version 2.3.40, Ctrl-U to update) Version 2.3.35 Region United States (us) Web Interface http://127.0.0.1:4040 Forwarding http://1259539cb974.ngrok.io -> http://localhost:5000 Forwarding https://1259539cb974.ngrok.io -> http://localhost:5000 Connections ttl opn rt1 rt5 p50 p90 9 0 0.00 0.00 0.00 0.00

在这里我们可以看到Ngrok已经为我们配置了一个公网地址。比如访问1259539cb974.ngrok.io就相当于访问了我们本地的:5000服务,这样手机只需要配置这个地址就可以向PC发送数据了。.

接下来,我们在手机上打开SmsForder,添加一个Webhook类型的sender。配置如下:

这里,我们直接将Ngrok提供的公网地址设置为Server的地址。请记住将短信添加到 URL 路径。

然后我们添加一个转发规则:

安卓手机自带短信软件主题_安卓短信软件_电话短信轰炸安卓软件

这里我们设置内容匹配规则。例如,在测试开始时匹配到内容,短信的内容会被转发到Webhook的发送者,也就是发送到我们刚刚搭建的Flask服务器。

OK,配置完成后,我们尝试给手机发送验证码,如下:

测试验证码593722,一分钟有效。

这时候可以发现刚才Flask服务器收到的结果如下:

received +8617xxxxxxxx测试验证码593722,一分钟有效。SIM2_China Unicom_2021-03-27 18:47:54SM-G9860

可以看到验证码的内容已经成功的从手机发送到了PC端,接下来我们就可以对消息进行解析处理,然后存储到数据库或者消息队列中。爬虫可以通过监控消息队列来填充消息队列或数据库变化,并进行一些模拟登录操作。此步骤将不再重复。

批量发送和接收

当然,以上仅针对一部手机的情况。如果我们有大量的手机和手机卡,可以实现手机的群控处理,比如统一安装短信接收软件,统一配置相同的转发规则,从而实现大量移动电话号码验证码接收和处理。

例如,一个群控系统是这样的:

卡池

当然,还有更专业的解决方案,比如专业的手机卡池,可以用专业的软件设备监控短信。

例如下面的设备支持插入128张SIM卡安卓短信软件,可以同时监听128个手机号码的验证码,如图:

电话短信轰炸安卓软件_安卓手机自带短信软件主题_安卓短信软件

具体技术在此不做赘述,具体可以查看相关设备供应商。

代码平台

当然,上述方案的成本还是比较高的,而且这些方案并不局限于简单的接收短信验证码。比如手机群控系统一般使用手机群控爬虫,卡池也可以作为4G/5G蜂窝代理。,如果只能收发短信的话,那就有点浪费了。

如果我们不想花太多的成本,又想把短信验证码自动化,还有一个解决方案就是收码平台。基本思路如下:

具体操作步骤在此不再赘述。以下是一些代码连接平台:

由于收码平台管控严格,可能随时无法使用。请收集相应平台使用。

最新文章