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 相关文章推荐
linux系统使用python监控apache服务器进程脚本分享
Jan 15 Python
浅谈python 四种数值类型(int,long,float,complex)
Jun 08 Python
对Python中DataFrame按照行遍历的方法
Apr 08 Python
Python实现购物车程序
Apr 16 Python
python pycurl验证basic和digest认证的方法
May 02 Python
django 在原有表格添加或删除字段的实例
May 27 Python
selenium2.0中常用的python函数汇总
Aug 05 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
Python 实现向word(docx)中输出
Feb 13 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
Jun 18 Python
Django路由层如何获取正确的url
Jul 15 Python
Python+pyaudio实现音频控制示例详解
Jul 23 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 jQuery表单,带验证具体实现方法
2014/02/15 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
限制文本字节数js代码
2007/03/06 Javascript
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
js实现简单的可切换选项卡效果
2015/04/10 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
javascript实现的左右无缝滚动效果
2016/09/19 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
nodeJS实现路由功能实例代码
2017/06/08 NodeJs
详解VUE 数组更新
2017/12/16 Javascript
Node.js log4js日志管理详解
2018/07/31 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
Python实现的监测服务器硬盘使用率脚本分享
2014/11/07 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
使用Python对Access读写操作
2017/03/30 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
Python异常处理操作实例详解
2018/08/28 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
详解Pandas之容易让人混淆的行选择和列选择
2019/07/10 Python
在django admin中添加自定义视图的例子
2019/07/26 Python
python装饰器相当于函数的调用方式
2019/12/27 Python
python中使用you-get库批量在线下载bilibili视频的教程
2020/03/10 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
社区中秋节活动方案
2014/01/29 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
2014年度安全工作总结
2014/12/04 职场文书
消防安全月活动总结
2015/05/08 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
详解PHP用mb_string处理windows中文字符
2021/05/26 PHP
详解Redis瘦身指南
2021/05/26 Redis