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发送SMTP邮件的教程
Apr 29 Python
python通过socket查询whois的方法
Jul 18 Python
Python中的字符串替换操作示例
Jun 27 Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
Apr 05 Python
python增加矩阵维度的实例讲解
Apr 04 Python
解决django中ModelForm多表单组合的问题
Jul 18 Python
详解Python修复遥感影像条带的两种方式
Feb 23 Python
基于Numba提高python运行效率过程解析
Mar 02 Python
windows支持哪个版本的python
Jul 03 Python
在keras中对单一输入图像进行预测并返回预测结果操作
Jul 09 Python
虚拟机下载python是否需要联网
Jul 27 Python
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
Apr 27 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 错误之引号中使用变量
2009/05/04 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
PHP的Yii框架的常用日志操作总结
2015/12/08 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
IE6,IE7下js动态加载图片不显示错误
2010/07/17 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
2015/04/12 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
2015/06/05 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
js实现简单选项卡功能
2020/03/23 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
Django Admin实现上传图片校验功能
2016/03/06 Python
深入解析Python编程中super关键字的用法
2016/06/24 Python
详解使用python的logging模块在stdout输出的两种方法
2017/05/17 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
python使用Matplotlib画条形图
2020/03/25 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
在django admin中添加自定义视图的例子
2019/07/26 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
超级实用的8个Python列表技巧
2020/08/24 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
2019年.net常见面试问题
2012/02/12 面试题
DTD的含义以及作用
2014/01/26 面试题
2015年小学数学教师个人工作总结
2015/05/25 职场文书
宇宙与人观后感
2015/06/05 职场文书