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同时兼容python2和python3的8个技巧分享
Jul 11 Python
python Django批量导入数据
Mar 25 Python
python IDLE 背景以及字体大小的修改方法
Jul 12 Python
python爬虫 线程池创建并获取文件代码实例
Sep 28 Python
python抓取多种类型的页面方法实例
Nov 20 Python
Pytorch根据layers的name冻结训练方式
Jan 06 Python
Python生成器传参数及返回值原理解析
Jul 22 Python
Python本地及虚拟解释器配置过程解析
Oct 13 Python
用python获取txt文件中关键字的数量
Dec 24 Python
Python实现简单猜数字游戏
Feb 03 Python
python实现简单石头剪刀布游戏
Oct 24 Python
Python  序列化反序列化和异常处理的问题小结
Dec 24 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
15种PHP Encoder的比较
2007/04/17 PHP
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
不使用php api函数实现数组的交换排序示例
2014/04/13 PHP
PHP正则验证Email的方法
2015/06/15 PHP
列表内容的选择
2006/06/30 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
用表格输出1-1000之间的数字实现代码(附特效)
2013/04/21 Javascript
JS控制表单提交的方法
2015/07/09 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
2015/11/18 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
2015/12/16 Javascript
JS中创建函数的三种方式及区别
2016/03/13 Javascript
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
vue增删改查的简单操作
2017/07/15 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
纯js代码生成可搜索选择下拉列表的实例
2018/01/11 Javascript
Vue $emit $refs子父组件间方法的调用实例
2018/09/12 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
vscode调试node.js的实现方法
2020/03/22 Javascript
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
python遍历 truple list dictionary的几种方法总结
2016/09/11 Python
python 消费 kafka 数据教程
2019/12/21 Python
logging level级别介绍
2020/02/21 Python
Python configparser模块常用方法解析
2020/05/22 Python
python中pop()函数的语法与实例
2020/12/01 Python
java程序员面试交流
2012/11/29 面试题
捐书活动总结
2014/05/04 职场文书
应急处置方案
2014/06/16 职场文书
优秀班集体申报材料
2014/12/25 职场文书
业务员辞职信范文
2015/03/02 职场文书
保外就医申请书范文
2015/08/06 职场文书
高一军训感想
2015/08/07 职场文书
2019年教师节:送给所有老师的祝福语
2019/09/05 职场文书
JS实现数组去重的11种方法总结
2022/04/04 Javascript