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

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

本文解释了如何使用美丽的汤库来解析html。 它详细介绍了常见方法,例如find(),find_all(),select()和get_text(),以用于数据提取,处理不同的HTML结构和错误以及替代方案(SEL)

本文比较了Tensorflow和Pytorch的深度学习。 它详细介绍了所涉及的步骤:数据准备,模型构建,培训,评估和部署。 框架之间的关键差异,特别是关于计算刻度的

在使用Python的pandas库时,如何在两个结构不同的DataFrame之间进行整列复制是一个常见的问题。假设我们有两个Dat...

本文指导Python开发人员构建命令行界面(CLIS)。 它使用Typer,Click和ArgParse等库详细介绍,强调输入/输出处理,并促进用户友好的设计模式,以提高CLI可用性。

本文讨论了诸如Numpy,Pandas,Matplotlib,Scikit-Learn,Tensorflow,Tensorflow,Django,Blask和请求等流行的Python库,并详细介绍了它们在科学计算,数据分析,可视化,机器学习,网络开发和H中的用途

文章讨论了虚拟环境在Python中的作用,重点是管理项目依赖性并避免冲突。它详细介绍了他们在改善项目管理和减少依赖问题方面的创建,激活和利益。
