首先为大家分享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里注册一下接收器:
添加权限:
python 代码,主要通过adb log来获取apk包所截取的短信信息,然后进行分析后既可使用。
__author__ = 'guozhenhua'#coding=utf-8import urllib2import 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
以上就是本文的全部内容,内容很丰富,但是也存在一些不足,希望大家谅解,共同学习进步。