Python接收手机短信的代码整理


Posted in Python onAugust 02, 2020

python解决接口测试获取手机验证码问题的方法:

Android在收到短信后会发送一个Action为android.provider.Telephony.SMS_RECEIVED的广播,所以我们只需要写个类继承BroadcastReceiver就可以很容易地监听到短信。

package com.example.getsms;
 
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.text.TextUtils;
import android.util.Log;
 
public class SmsInterceptReceiver extends BroadcastReceiver {
 
private final String TAG = "SmsRec";
 
 private static final String SMS_EXTRA_NAME ="pdus";
 
 @Override
 public void onReceive(Context context, Intent intent) {
 // TODO Auto-generated method stub
 String message = "";
 
 Log.e(TAG, "free message " );
  
  Bundle extras = intent.getExtras();
  if ( extras != null ) {
   try {
   Object[] smsExtra = (Object[]) extras.get( SMS_EXTRA_NAME );
    ContentResolver contentResolver = context.getContentResolver();
     
    Log.e(TAG, "free message " );
    for ( int i = 0; i < smsExtra.length; ++i ) {
     SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]);
      
     String body = sms.getMessageBody().toString();
     message += body;
    }
         
    Log.e(TAG, "free message : " + message);
   } catch (Exception e) {
   // TODO: handle exception
   Log.e(TAG, e.getMessage());
   }
  }  
 }
}

AndroidManifest.xml里注册一下接收器:

<receiver android:name=".SmsInterceptReceiver">
   <intent-filter>
   <action android:name="android.provider.Telephony.SMS_RECEIVED" />
   </intent-filter>
  </receiver>

添加权限:

<uses-permission android:name="android.permission.RECEIVE_SMS"/>

python 代码,主要通过adb log来获取apk包所截取的短信信息,然后进行分析后既可使用。

__author__ = 'guozhenhua'
#coding=utf-8
import urllib2
import os,time
#解析短信验证码
os.system("adb logcat -c")
cmd="adb logcat -d |findstr E/SmsRec"
#time.sleep(30);
while(1):
 smscode= os.popen(cmd).read()
 #print smscode
 if (smscode!=""):
  smscode=smscode.split("验证码:")[1].split(",")[0]
  break;
print "验证码是:"+smscode

实例扩展:

package com.example.getsms;


import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.text.TextUtils;
import android.util.Log;


public class SmsInterceptReceiver extends BroadcastReceiver {


private final String TAG = "SmsRec";
 
 private static final String SMS_EXTRA_NAME ="pdus";
 
 @Override
 public void onReceive(Context context, Intent intent) {
 // TODO Auto-generated method stub
 String message = "";
 
 Log.e(TAG, "free message " );
 
  Bundle extras = intent.getExtras();
  if ( extras != null ) {
   try {
   Object[] smsExtra = (Object[]) extras.get( SMS_EXTRA_NAME );
    ContentResolver contentResolver = context.getContentResolver();
    
    Log.e(TAG, "free message " );
    for ( int i = 0; i < smsExtra.length; ++i ) {
     SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]);
     
     String body = sms.getMessageBody().toString();
     message += body;
    }
    
    
    Log.e(TAG, "free message : " + message);
   } catch (Exception e) {
   // TODO: handle exception
   Log.e(TAG, e.getMessage());
   }
  } 
  
 }


}

以上就是Python接收手机短信的代码整理的详细内容,更多关于Python怎么接收手机短信的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python代理抓取并验证使用多线程实现
May 03 Python
Linux下使用python调用top命令获得CPU利用率
Mar 10 Python
Python数据库的连接实现方法与注意事项
Feb 27 Python
python urllib爬取百度云连接的实例代码
Jun 19 Python
django静态文件加载的方法
May 20 Python
Python基于Tkinter模块实现的弹球小游戏
Dec 27 Python
django 消息框架 message使用详解
Jul 22 Python
python识别文字(基于tesseract)代码实例
Aug 24 Python
在python中做正态性检验示例
Dec 09 Python
python 将dicom图片转换成jpg图片的实例
Jan 13 Python
使用Django和Postgres进行全文搜索的实例代码
Feb 13 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
Mar 24 Python
Python改变对象的字符串显示的方法
Aug 01 #Python
Python 如何定义匿名或内联函数
Aug 01 #Python
Python sqlalchemy时间戳及密码管理实现代码详解
Aug 01 #Python
Python如何读写二进制数组数据
Aug 01 #Python
Python将字典转换为XML的方法
Aug 01 #Python
Python Flask异步发送邮件实现方法解析
Aug 01 #Python
Python实现弹球小游戏
Aug 01 #Python
You might like
PHP zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
2011/05/07 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
php while循环控制的简单实例
2016/05/30 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
XMLHTTPRequest的属性和方法简介
2010/11/23 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
2015/02/18 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
Javascript之String对象详解
2016/06/08 Javascript
JS图片等比例缩放方法完整示例
2016/08/03 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
JavaScript中常用的验证reg
2016/10/13 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
非常实用的vue导航钩子
2017/03/20 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
2017/08/23 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
layer.alert回调函数执行关闭弹窗的实例
2019/09/11 Javascript
Vue中keep-alive组件作用详解
2020/02/04 Javascript
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
Python-jenkins模块获取jobs的执行状态操作
2020/05/12 Python
Canvas与Image互相转换示例代码
2013/08/09 HTML / CSS
蔻驰英国官网:COACH英国
2020/07/19 全球购物
如何转换一个字符串到enum值
2014/04/12 面试题
质量承诺书格式
2014/05/20 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
golang在GRPC中设置client的超时时间
2021/04/27 Golang