国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python實現發送和獲取手機短信驗證碼

2020-01-04 17:50:46
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了python實現發送和獲取手機短信驗證碼的相關資料,講解了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="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-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

以上就是本文的全部內容,內容很豐富,但是也存在一些不足,希望大家諒解,共同學習進步。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 隆昌县| 河南省| 砀山县| 海林市| 留坝县| 陕西省| 遂宁市| 河间市| 米易县| 武山县| 砀山县| 赤水市| 于田县| 深泽县| 嘉义市| 清新县| 德化县| 任丘市| 遂溪县| 寿阳县| 澄江县| 宜黄县| 天镇县| 河池市| 赤城县| 靖安县| 栾川县| 肥城市| 墨江| 平顺县| 应用必备| 黔东| 安龙县| 宁陕县| 新建县| 夹江县| 南溪县| 南溪县| 兰州市| 祁阳县| 海丰县|