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删除特定文件的方法
Jul 30 Python
python脚本实现数据导出excel格式的简单方法(推荐)
Dec 30 Python
Python模拟登陆实现代码
Jun 14 Python
Python numpy生成矩阵、串联矩阵代码分享
Dec 04 Python
Python输出各行命令详解
Feb 01 Python
python学生管理系统代码实现
Apr 05 Python
PyQt5每天必学之组合框
Apr 20 Python
Python框架Flask的基本数据库操作方法分析
Jul 13 Python
python批量修改图片后缀的方法(png到jpg)
Oct 25 Python
Python os库常用操作代码汇总
Nov 03 Python
python如何获取网络数据
Apr 11 Python
 分享一个Python 遇到数据库超好用的模块
Apr 06 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
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
2018/07/31 PHP
Javascript中的变量使用说明
2010/05/18 Javascript
简体中文转换繁体中文(实现代码)
2013/12/25 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
使用Sonarqube扫描Javascript代码的示例
2018/12/26 Javascript
JS判断两个数组或对象是否相同的方法示例
2019/02/28 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
python数组过滤实现方法
2015/07/27 Python
Python 提取dict转换为xml/json/table并输出的实现代码
2016/08/28 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
python实现桌面壁纸切换功能
2019/01/21 Python
计算机二级python学习教程(1) 教大家如何学习python
2019/05/16 Python
ipad上运行python的方法步骤
2019/10/12 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
使用sklearn对多分类的每个类别进行指标评价操作
2020/06/11 Python
详解python内置模块urllib
2020/09/09 Python
python request 模块详细介绍
2020/11/10 Python
Python eval函数原理及用法解析
2020/11/14 Python
介绍一下Make? 为什么使用make
2013/12/08 面试题
五一家具促销方案
2014/01/10 职场文书
学生顶撞老师的检讨书
2014/09/17 职场文书
2016春节家属慰问信
2015/03/25 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server
MySQL数据库⾼可⽤HA实现小结
2022/01/22 MySQL
vue项目如何打包之项目打包优化(让打包的js文件变小)
2022/04/30 Vue.js