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应用程序在windows下不出现cmd窗口的办法
May 29 Python
Python pickle类库介绍(对象序列化和反序列化)
Nov 21 Python
Python中.py文件打包成exe可执行文件详解
Mar 22 Python
浅谈tensorflow中几个随机函数的用法
Jul 27 Python
对python 多线程中的守护线程与join的用法详解
Feb 18 Python
seek引发的python文件读写的问题及解决
Jul 26 Python
深入了解Django中间件及其方法
Jul 26 Python
python word转pdf代码实例
Aug 16 Python
Python图像处理模块ndimage用法实例分析
Sep 05 Python
python将邻接矩阵输出成图的实现
Nov 21 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
Dec 07 Python
Python3中对json格式数据的分析处理
Jan 28 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 配置文件中open_basedir选项作用
2009/07/19 PHP
PHP 柱状图实现代码
2009/12/04 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
Javascript 面向对象 重载
2010/05/13 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
js闭包实例汇总
2014/11/09 Javascript
javascript常用方法汇总
2014/12/02 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
javascript实现日期时间动态显示示例代码
2015/09/08 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
同步异步动态引入js文件的几种方法总结
2016/09/23 Javascript
CSS3 media queries结合jQuery实现响应式导航
2016/09/30 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
python算法学习之计数排序实例
2013/12/18 Python
对Python中画图时候的线类型详解
2019/07/07 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
Python读取图像并显示灰度图的实现
2020/12/01 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
建筑工程专业毕业生自荐信
2013/10/19 职场文书
档案接收函
2014/01/13 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
小学音乐教师个人工作总结
2015/02/05 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
西安事变观后感
2015/06/12 职场文书
详解Python常用的魔法方法
2021/06/03 Python