首先為大家分享 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
以上就是本文的全部內容,內容很豐富,但是也存在一些不足,希望大家諒解,共同學習進步。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

