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 09 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
Nov 08 Python
python 多维切片之冒号和三个点的用法介绍
Apr 19 Python
解决python xx.py文件点击完之后一闪而过的问题
Jun 24 Python
Flask配置Cors跨域的实现
Jul 12 Python
基于Python实现大文件分割和命名脚本过程解析
Sep 29 Python
python 扩展print打印文件路径和当前时间信息的实例代码
Oct 11 Python
Pytorch 多块GPU的使用详解
Dec 31 Python
python批量修改文件名的示例
Sep 27 Python
Django admin组件的使用
Oct 24 Python
详解Anaconda安装tensorflow报错问题解决方法
Nov 01 Python
python中random模块详解
Mar 01 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 mysql_real_escape_string函数用法与实例教程
2013/09/30 PHP
php绘制一条直线的方法
2015/01/24 PHP
PHP中数据类型转换的三种方式
2015/04/02 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
javascript EXCEL 操作类代码
2009/07/30 Javascript
javascript闭包的理解和实例
2010/08/12 Javascript
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
PageSwitch插件实现100种不同图片切换效果
2015/07/28 Javascript
微信小程序 开发工具快捷键整理
2016/10/31 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
2019/04/20 Javascript
Python进行数据科学工作的简单入门教程
2015/04/01 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
python3常用的数据清洗方法(小结)
2019/10/31 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
解决Keras中CNN输入维度报错问题
2020/06/29 Python
请解释在new与override的区别
2012/10/29 面试题
韩国商务邀请函
2014/01/14 职场文书
给护士表扬信
2014/01/19 职场文书
爱心捐款倡议书
2014/04/14 职场文书
《从现在开始》教学反思
2014/04/15 职场文书
中考标语大全
2014/06/05 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
幼儿教师暑期培训方案
2014/08/27 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
高中政治教师教学反思
2016/02/23 职场文书
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle
vue选项卡切换的实现案例
2022/04/11 Vue.js