python实现发送和获取手机短信验证码


Posted in Python onJanuary 15, 2016

首先为大家分享python实现发送手机短信验证码后台方法,供大家参考,具体内容如下

1、生成4位数字验证码

def createPhoneCode(session): 
  chars=['0','1','2','3','4','5','6','7','8','9'] 
  x = random.choice(chars),random.choice(chars),random.choice(chars),random.choice(chars) 
  verifyCode = "".join(x) 
  session["phoneVerifyCode"] = {"time":int(time.time()), "code":verifyCode} 
  return verifyCode

2、发送给外部短信接口(post方式)

def sendTelMsg(msg, phoneID): 
  SendTelMsgUrl="http://www.810086.com.cn/jk.aspx" 
  params = {"zh":"china", "mm":"china@10086",  
       "hm":phoneID,"nr":msg,"sms_type":88} 
  postData=urllib.urlencode(params) 
  req = urllib2.Request(SendTelMsgUrl, postData) 
  req.add_header('Content-Type', "application/x-www-form-urlencoded") 
  respone = urllib2.urlopen(req) 
  res = respone.read() 
  return res

其中session参数是django urls.py 后台方法 以request.session传入

3、前端js

$("button[name=getVerifyBt]").bind("click", function(){ 
  var self = this; 
  var userPhoneEl = $("input[name=phoneNum]"); 
  var userPhone = $.trim(userPhoneEl.val()); 
  if (userPhone == ""){ 
    alert("请填写号码!"); 
    return; 
  } 
  $.get("/getPhoneVerifyCode/"+userPhone + "/") 
  .success(function(msg){ 
    console.info(msg); 
    var ddEl = $(self).siblings("dd.showTag"); 
    if(msg == "ok"){ 
      ddEl.find("span").hide(); 
      ddEl.find("span[name=success]").show(); 
    }else{ 
      ddEl.find("span").hide(); 
      ddEl.find("span[name=error]").show();           
    } 
  }) 
  .error(function(msg){ 
    console.info(msg); 
  }); 
  var step = 60; 
  $(this).attr("disabled", true);  
  $(this).html("重新发送"+step); 
  var interThread = setInterval(function(){ 
    step-=1; 
    $(self).html("重新发送"+step); 
    if(step <=0){ 
      $(self).removeAttr("disabled"); 
      $(self).html("获取验证码"); 
      clearInterval(interThread); 
    } 
  }, 1000); 
   
   
});

下面就为大家介绍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

以上就是本文的全部内容,内容很丰富,但是也存在一些不足,希望大家谅解,共同学习进步。

Python 相关文章推荐
在Python中使用全局日志时需要注意的问题
May 06 Python
浅析Python中signal包的使用
Nov 13 Python
Python 正则表达式入门(初级篇)
Dec 07 Python
python通过pip更新所有已安装的包实现方法
May 19 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
Nov 22 Python
python实现协同过滤推荐算法完整代码示例
Dec 15 Python
python3+PyQt5重新实现自定义数据拖放处理
Apr 19 Python
Python通用循环的构造方法实例分析
Dec 19 Python
利用Python小工具实现3秒钟将视频转换为音频
Oct 29 Python
如何基于Python实现数字类型转换
Feb 07 Python
基于Python fminunc 的替代方法
Feb 29 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
Jan 27 Python
详解python单例模式与metaclass
Jan 15 #Python
理解python正则表达式
Jan 15 #Python
Python工程师面试题 与Python Web相关
Jan 14 #Python
Python工程师面试题 与Python基础语法相关
Jan 14 #Python
5种Python单例模式的实现方式
Jan 14 #Python
Python2.x与Python3.x的区别
Jan 14 #Python
python Django模板的使用方法
Jan 14 #Python
You might like
一个PHP分页类的代码
2011/05/18 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
php实现简单爬虫的开发
2016/03/28 PHP
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
javascript Array.remove() 数组删除
2009/08/06 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
jquery判断RadioButtonList和RadioButton中是否有选中项示例
2013/09/29 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
JavaScript实现查找字符串中第一个不重复的字符
2014/12/29 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
2016/06/21 Javascript
原生js图片轮播效果实现代码
2016/10/19 Javascript
node.js缺少mysql模块运行报错的解决方法
2016/11/13 Javascript
Centos6.8下Node.js安装教程
2017/05/12 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
Vue隐藏显示、只读实例代码
2018/07/18 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
2018/11/05 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
python实现向ppt文件里插入新幻灯片页面的方法
2015/04/28 Python
Python数据结构与算法之完全树与最小堆实例
2017/12/13 Python
在Pycharm中将pyinstaller加入External Tools的方法
2019/01/16 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
详解Python中的编码问题(encoding与decode、str与bytes)
2020/09/30 Python
python字典与json转换的方法总结
2020/12/28 Python
HTML5未来发展趋势
2016/02/01 HTML / CSS
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
药品采购员岗位职责
2014/02/08 职场文书
初三学生评语大全
2014/04/24 职场文书
应用外语系自荐信
2014/06/26 职场文书
写给同学的新学期寄语
2015/02/27 职场文书
Java版 简易五子棋小游戏
2022/05/04 Java/Android