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 相关文章推荐
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
Apr 11 Python
Django框架实现逆向解析url的方法
Jul 04 Python
使用python对文件中的数值进行累加的实例
Nov 28 Python
PyCharm鼠标右键不显示Run unittest的解决方法
Nov 30 Python
对python中类的继承与方法重写介绍
Jan 20 Python
pytz格式化北京时间多出6分钟问题的解决方法
Jun 21 Python
Python初学者常见错误详解
Jul 02 Python
使用Python进行中文繁简转换的实现代码
Oct 18 Python
Python 调用有道翻译接口实现翻译
Mar 02 Python
基于Python词云分析政府工作报告关键词
Jun 02 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
Jun 04 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
Feb 25 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
重量级动漫纷纷停播!唯独OVERLORD第四季正在英魂之刃继续更新
2020/05/06 日漫
基于php-fpm的配置详解
2013/06/03 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
ThinkPHP连接数据库的方式汇总
2014/12/05 PHP
memcache一致性hash的php实现方法
2015/03/05 PHP
php微信开发之自定义菜单实现
2016/11/18 PHP
JS模块与命名空间的介绍
2013/03/22 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
Node.js的npm包管理器基础使用教程
2016/05/26 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
2016/08/01 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
使用JS组件实现带ToolTip验证框的实例代码
2017/08/23 Javascript
详解a++和++a的区别
2017/08/30 Javascript
解决angularjs中同步执行http请求的方法
2018/08/13 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
js实现for循环跳过undefined值示例
2019/07/02 Javascript
JavaScript语句错误throw、try及catch实例解析
2020/08/18 Javascript
[01:39]2014DOTA2国际邀请赛 Newbee经理CU专访队伍火力全开
2014/07/15 DOTA
Python中定时任务框架APScheduler的快速入门指南
2017/07/06 Python
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
2019/01/29 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
医德医风自我评价
2014/09/19 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书
Redis批量生成数据的实现
2022/06/05 Redis