在做获取验证码的工作之前,边肖做了一些研究,就是咨询了一些有经验的人,如何获取短信的验证码,得到了三种方法,可能不全。请告诉上帝。
卡猫(支付)
安卓短信广播
第三方代码访问平台(付费)
收费分两种,因为清不考虑。大家分享一下,如果你是通过安卓广播获得短信验证码的话。
Android会发送一个广播,它的Action是Android . provider . telephony . SMS _ received在收到短信后,所以我们只需要编写一个类来继承BroadcastReceiver,就可以很方便的收听短信了。
边肖这样做,首先安装一个android studio,然后构建一个新的项目,然后在构建项目之后转到该项目-& gt;app->;src - >。main->;java ->。在com.example.xxx.myapplication下,创建一个新文件,文件名为SmsInterceptReceiver。输入以下代码。如果您发现有些类名在复制后是红色的,这意味着您没有包指南。在mac上按alt+enter并添加一个包。请点击百度获取窗口的快捷键。
package com . example . getsms;
导入Android . content . BroadcastReceiver;
导入Android . content . ContentResolver;
导入Android . content . context;
导入Android . content . intent;
导入Android . OS . bundle;
导入Android . telephone . smsmessage;
导入Android . util . log;
/**
*由xxx于2028年3月17日创建。
*/
公共类SmsInterceptReceiver扩展了BroadcastReceiver {
private final String TAG = " SMsrec ";
私有静态最终字符串SMS _ EXTRA _ NAME = " pdus
@覆盖
接收时公共无效(上下文上下文上下文,意图意图)
// TODO自动生成的方法存根
string message = ";
Log.e(TAG,“免费消息”);
bundle extras = intent . getextras();
if ( extras!= null ) {
尝试{
Object[]smsExtra =(Object[])extras . get(SMS _ EXTRA _ NAME);
content resolver content resolver = context . GetContentresolver();
Log.e(TAG,“免费消息”);
for(int I = 0;i <。smsExtra.length++(I){
短信短信短信=短信短信。((byte[])smsExtra[I]);
String body = sms.getMessageBody()。toString();
message+= body;
}
Log.e(TAG,"免费消息:"+消息);
}捕获(例外e) {
// TODO:处理异常
Log.e(TAG,e . GetMEssage());
}
}
}
}
在AndroidManifest.xml中注册接收者(该文件位于java对等目录res下):
以下代码可以添加到同一级别的活动标签下
& lt接收者android:name=。SmsInterceptReceiver " >;
& lt意图过滤器>。
& ltaction Android:name = " Android . provider . telephony . SMS _ RECEIVED "/& gt;
& lt/intent-filter>。
& lt/receiver>。
添加权限(是上面的xml文件,如果你有疑惑,问问你的Android开发):
下面的代码被添加到应用程序标签中
& ltuses-permission Android:name = " Android . permission . RECEIVE _ SMS "/& gt;
手机连接电脑,打开USB调试。Adb设备检查手机是否连接。准备完成后,点击android studio页面上的绿色三角形按钮运行。如果运行成功,手机上会有一个页面,上面有你自己项目名称的蓝色标题。��
Python代码,主要是通过adb日志获取apk包截获的短信信息,然后分析使用。
#coding=utf-8
导入操作系统
def GetCodeFromSms():
os.system("adb logcat -c ")
cmd = ' adb logcat -d |grep E/SmsRec '
while(1):
smscode = os.popen(cmd)。阅读()
打印smscode
if (smscode!=""):
Smscode = smscode.split("验证码:")[1]。拆分(“,”[0]
打破;
打印“验证码为:“+smscode
if __name__ == '__main__ ':
GetCodeFromSms()
因为边肖使用mac,所以grep用于过滤。如果您是windows,请将其更改为findstr。
文件编辑放在终端的文件夹中,运行python文件,通过接口发送验证码给链接的手机,或者通过其他手机发送验证码给连接的手机进行测试。可以在终端看到输出的验证码,然后根据自己的需要取出来。
E/SmsRec (12345):免费留言
E/SmsRec (12345):免费留言
E/SmsRec (12345):免费留言:验证码:654321
验证码是654321
至于为什么多了几条免费消息,那是因为java代码的开发是用log . E/调试的,是错误消息的意思,但是可以显示。D/是调试消息,I/是一般消息W/是警告消息V/是各种混沌消息
以上是今天的分享。如有不足或问题,可以在留言中反馈。另外,现在的代码有点问题。如果没有收到短信,就会陷入无限循环,就是可以看到python文件一直在运行,但是没有输出短信验证码。可以写一个循环来判断。如果得到验证码,就会跳出循环。如果你不明白,你将被暂停。欢迎任何解决方案!
其实github上有一个共享的apk,但是打包后apk页面显示收到的验证码为空,权限是根据readme配置的。哪位朋友做过,请回答为什么,github文章链接。
https://github.com/Robin-jiangyufeng/SmsObserverForAndroid
零符号
零符号
考白
每天都有一篇文章精彩
天天问,每句话都是原创
提交邮件:csbaixiaosheng@163.com
微信号:ces Shi Bai小生
1.《获取验证码 获取短信验证码》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《获取验证码 获取短信验证码》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/1202687.html