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深入学习之上下文管理器
Aug 31 Python
Python中下划线的使用方法
Mar 27 Python
使用IronPython把Python脚本集成到.NET程序中的教程
Mar 31 Python
介绍Python的@property装饰器的用法
Apr 28 Python
web.py 十分钟创建简易博客实现代码
Apr 22 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
Jun 29 Python
对tf.reduce_sum tensorflow维度上的操作详解
Jul 26 Python
python列表,字典,元组简单用法示例
Jul 11 Python
Python 文件数据读写的具体实现
Jan 24 Python
python离线安装外部依赖包的实现
Feb 13 Python
在python中利用pycharm自定义代码块教程(三步搞定)
Apr 15 Python
Jupyter Notebook 实现正常显示中文和负号
Apr 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
PHP编程与应用
2006/10/09 PHP
php中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
phpstorm编辑器乱码问题解决
2014/12/01 PHP
网页自动跳转代码收集
2009/09/27 Javascript
关于捕获用户何时点击window.onbeforeunload的取消事件
2011/03/06 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
2014/05/05 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
使用vue.js实现联动效果的示例代码
2017/01/10 Javascript
JavaScript基础之AJAX简单的小demo
2017/01/29 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
js实现图片上传并预览功能
2018/08/06 Javascript
解决vue单页路由跳转后scrollTop的问题
2018/09/03 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
JS继承定义与使用方法简单示例
2020/02/19 Javascript
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
python中xrange用法分析
2015/04/15 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
python实现快递价格查询系统
2020/03/03 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
手把手教你实现一个canvas智绘画板的方法
2019/03/04 HTML / CSS
amazeui树节点自动展开折叠面板并选中第一个树节点的实现
2020/08/24 HTML / CSS
后勤主管工作职责
2013/12/07 职场文书
销售找工作求职信
2013/12/20 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
事业单位财务人员岗位职责
2015/04/14 职场文书
培根随笔读书笔记
2015/07/01 职场文书
大学生受助感言
2015/08/01 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书