需要一个有权限的APK 在手机实时存储短信到手机内存/sdcard/smslog.txt 里(外部SD卡也可以知道能通过adb命令访问到):
/*****
......
try {
long timestamp = System.currentTimeMillis();
String time = formatter.format(new Date());
String fileName = "smsLog.txt";
if (Environment.getExternalStorageState().equals(Environment.MOUNTED)) {
String path = Environment.getExternalStorageDirectory()+"/";
***
if (!dir.exists()) {
dir.mkdirs();
}
*
fos.write((time + " " + s).getBytes());
fos.close();
}
return fileName;
} catch (Exception e) {
Log.e("sms", "an error occured while writing file...", e);
}
return null;
}
*******/
android脚本好了,签名+打包,装入手机就好了,安装实验一下:
自动生成了一个smslog.txt 再打开看一下内容,能正常记录,下面用写一个python脚本截取最后一段的最后四个数字就可以了
通过cmd
adb shell cat /sdcard/smsLog.txt
成功显示文件里的内容
-05-16-16-39-27 您好,你的短信验证码为7959
-05-16-16-40-09 您好,你的短信验证码为6474
-05-16-16-45-22 您好,你的短信验证码为4664
-05-16-17-19-47 您好,你的短信验证码为3320
-05-16-17-21-20 您好,你的短信验证码为3146
-05-16-17-27-40 您好,你的短信验证码为2709
-05-16-17-27-43 您好,你的短信验证码为9421
-05-16-17-27-46 您好,你的短信验证码为5035
-05-16-17-27-48 您好,你的短信验证码为2212
-05-16-17-27-49 您好,你的短信验证码为5745
-05-16-17-28-28 您好,你的短信验证码为5409
-05-16-17-28-32 您好,你的短信验证码为1176
-05-16-17-28-33 您好,你的短信验证码为8708
-05-16-17-28-35 您好,你的短信验证码为3997
-05-16-17-28-37 您好,你的短信验证码为3567
-05-16-18-45-57 您好,你的短信验证码为3060
在python脚本中再构个函数就解决了
def getSma():
adb = "adb shell cat /sdcard/smsLog.txt"
smsLog = os.popen(adb).readlines()
smscode = smsLog[-1][-6:-2]
return smscode
OK! 脚本登陆RUN,步骤到点击发送验证码之后成功获取并自动填入,短信验证码成功解决,提升了脚本的执行效率和自动化覆盖率! 下周再开始解决图形验证码自动识别问题, 之前用UFT试过识别率太低,这款商业软件越做越不值钱了. 咱不再去求人,自己解决,活着就是为了折腾.
如果觉得《python 自动获取手机短信验证码》对你有帮助,请点赞、收藏,并留下你的观点哦!