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里注册一下接收器:

添加权限:

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值