python實現發送和擷取手機簡訊驗證碼

來源:互聯網
上載者:User
首先為大家分享 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

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

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.