python实现发送和获取⼿机短信验证码
⾸先为⼤家分享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="www.810086/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 = ad()
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就可以很容易地监听到短信。
sms;
t.BroadcastReceiver;
t.ContentResolver;
t.Context;
t.Intent;
import android.os.Bundle;
lephony.SmsMessage;
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 = Extras();
if ( extras != null ) {
try {
Object[] smsExtra = (Object[]) ( SMS_EXTRA_NAME );
ContentResolver contentResolver = ContentResolver();
Log.e(TAG, "free message " );
for ( int i = 0; i < smsExtra.length; ++i ) {
SmsMessage sms = ateFromPdu((byte[]) smsExtra[i]);
String body = MessageBody().toString();
message += body;
}
Log.e(TAG, "free message : " + message);
} catch (Exception e) {
// TODO: handle exception
Log.e(TAG, e.getMessage());
}
}
}
}
<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);
python能在手机上运行吗while(1):
smscode= os.popen(cmd).read()
#print smscode
if (smscode!=""):
smscode=smscode.split("验证码:")[1].split(",")[0]
break;
print "验证码是:"+smscode
以上就是本⽂的全部内容,内容很丰富,但是也存在⼀些不⾜,希望⼤家谅解,共同学习进步。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。