首先为大家分享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-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
以上就是本文的全部内容,内容很丰富,但是也存在一些不足,希望大家谅解,共同学习进步。