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 多线程应用介绍
Dec 19 Python
Python中关键字nonlocal和global的声明与解析
Mar 12 Python
Django 如何获取前端发送的头文件详解(推荐)
Aug 15 Python
Django项目中包含多个应用时对url的配置方法
May 30 Python
Django 实现购物车功能的示例代码
Oct 08 Python
python如何制作缩略图
Apr 30 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
python中JWT用户认证的实现
May 18 Python
Java爬虫技术框架之Heritrix框架详解
Jul 22 Python
PyTorch中clone()、detach()及相关扩展详解
Dec 09 Python
Python趣味爬虫之用Python实现智慧校园一键评教
May 28 Python
使用Djongo模块在Django中使用MongoDB数据库
Jun 20 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
第1次亲密接触PHP5(1)
2006/10/09 PHP
php中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
PHP引用(&amp;)各种使用方法实例详解
2014/03/20 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
微信获取用户地理位置信息的原理与步骤
2015/11/12 PHP
laravel 解决paginate查询多个字段报错的问题
2019/10/22 PHP
PHP设计模式概论【概念、分类、原则等】
2020/05/01 PHP
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
jQuery 表单验证扩展(三)
2010/10/20 Javascript
json数据与字符串的相互转化示例
2013/09/18 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
微信小程序 火车票查询实例讲解
2016/10/17 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
vue+iview实现分页及查询功能
2020/11/17 Vue.js
[50:50]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第一场 12.10
2020/12/13 DOTA
[53:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第三场 1月18日
2021/03/11 DOTA
python 读写txt文件 json文件的实现方法
2016/10/22 Python
python使用正则表达式的search()函数实现指定位置搜索功能
2017/11/10 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
DOM和JQuery对象有什么区别
2016/11/11 面试题
新闻专业个人自我评价
2013/09/21 职场文书
医科大学生毕业的自我评价分享
2013/11/12 职场文书
经典而简洁的婚礼主持词
2014/03/13 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
关于开学的感想
2015/08/10 职场文书
团委副书记工作总结
2015/08/14 职场文书
幼儿园迎新生欢迎词
2015/09/30 职场文书
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android
WebRTC记录音视频流(web技术分享)
2022/02/24 Javascript
使用CSS连接数据库的方式
2022/02/28 HTML / CSS