python实现发送和获取手机短信验证码
admin
2023-07-31 02:32:45
0

首先为大家分享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

以上就是本文的全部内容,内容很丰富,但是也存在一些不足,希望大家谅解,共同学习进步。

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...