python按照号段生成手机号接收验证码,「 python 」 python 实现短信验证码
當(dāng)我們?cè)谧?cè)一個(gè)網(wǎng)頁(yè)時(shí),有的網(wǎng)頁(yè)會(huì)讓必須要短信驗(yàn)證、郵箱驗(yàn)證,才可以進(jìn)行賬號(hào)的注冊(cè)。其實(shí),我們?cè)陧?xiàng)目中會(huì)遇到很多問(wèn)題,比如:當(dāng)我們進(jìn)行爬蟲(chóng)的時(shí)候,很容易由于網(wǎng)頁(yè)的改版,造成我們事先寫(xiě)好的爬蟲(chóng)突然無(wú)效,此時(shí)就需要及時(shí)的通知到我們的后臺(tái)管理人員,可以進(jìn)行及時(shí)修改工作。所以使用短信或者郵件的發(fā)送是非常有必要的。
所以今天想來(lái)談一下如何使用Python進(jìn)行發(fā)送短信的操作。
短信驗(yàn)證
今天利用python第三方,發(fā)送短信驗(yàn)證碼的代碼,速實(shí)現(xiàn)一遍,短信立即收到,果斷記錄在案!
程序運(yùn)行的環(huán)境是 windows10 + Python 3.6,由于第三方平臺(tái)較多,我們今天使用榛子云短信平臺(tái),這個(gè)平臺(tái)免費(fèi)使用1條,充值10元,可以發(fā)送270條短信。
下載SDK
因?yàn)槲覀冞@次的環(huán)境是Python3,所以我們選擇Python3,下載我們需要的其他文件,保存即可。
下載SDK文檔
我們點(diǎn)擊這個(gè)就會(huì)進(jìn)入Python SDK 開(kāi)發(fā)文檔,內(nèi)容如下:
1.安裝
下載后的SDK只包含一個(gè)zhenzismsclient.py文件,直接導(dǎo)入到工程中即可使用。
以下是zhenzismsclient.py文件
# -*- coding: utf-8 -*-
# @Time : 2019/7/21 15:19
# @Author : hang1720
# @Site :
# @File : zhenzismsclient.py
# @Software: PyCharm
import urllib.request
import urllib.parse
class ZhenziSmsClient(object):
def __init__(self, apiUrl, appId, appSecret):
self.apiUrl = apiUrl
self.appId = appId
self.appSecret = appSecret
def send(self, number, message, messageId=''):
data = {
'appId': self.appId,
'appSecret': self.appSecret,
'message': message,
'number': number,
'messageId': messageId
}
data = urllib.parse.urlencode(data).encode('utf-8')
req = urllib.request.Request(self.apiUrl + '/sms/send.do', data=data)
res_data = urllib.request.urlopen(req)
res = res_data.read()
res = res.decode('utf-8')
return res
def balance(self):
data = {
'appId': self.appId,
'appSecret': self.appSecret
}
data = urllib.parse.urlencode(data).encode('utf-8')
req = urllib.request.Request(self.apiUrl + '/account/balance.do', data=data);
res_data = urllib.request.urlopen(req)
res = res_data.read()
return res
def findSmsByMessageId(self, messageId):
data = {
'appId': self.appId,
'appSecret': self.appSecret,
'messageId': messageId
}
data = urllib.parse.urlencode(data).encode('utf-8')
req = urllib.request.Request(self.apiUrl + '/smslog/findSmsByMessageId.do', data=data)
res_data = urllib.request.urlopen(req)
res = res_data.read()
return res
2.用法
引入模塊
import zhenzismsclient as smsclient
使用事先申請(qǐng)的AppId、AppSecret初始化ZhenziSmsClient:
client = smsclient.ZhenziSmsClient(apiUrl, appId, appSecret);
apiUrl為請(qǐng)求地址,個(gè)人開(kāi)發(fā)者使用https://sms_developer.zhenzikj.com,企業(yè)開(kāi)發(fā)者使用https://sms.zhenzikj.com
下面是獲取AppId、AppSecret的簡(jiǎn)單步驟:
1.首先,我們先登錄。
zzy1.png
2.我們獲取AppId、AppSecret
zzy2.jpg
溫馨提示:
可以免費(fèi)使用一條,后面就要自己購(gòu)買了。
1)發(fā)送短信
result = client.send('15811111111', '您的驗(yàn)證碼為2323');
send方法用于單條發(fā)送短信
參數(shù)1:接收者手機(jī)號(hào)碼,參數(shù)2:短信內(nèi)容
返回結(jié)果是json格式的字符串, code: 發(fā)送狀態(tài),0為成功。非0為發(fā)送失敗,可從data中查看錯(cuò)誤信息
注: 測(cè)試發(fā)送短信內(nèi)容不要使用"你好"或"12132"全數(shù)字形式,這種短信內(nèi)容沒(méi)有具體的意義,可能會(huì)被運(yùn)營(yíng)商屏蔽
{
"code":0,
"data":"發(fā)送成功"
}
2)發(fā)送短信(返回狀態(tài)報(bào)告)
result = client.send('15811111111', '您的驗(yàn)證碼為2323', 'dfee_dfdw_xdfd_dfdfd');
send方法用于單條發(fā)送短信,并且開(kāi)發(fā)者可接受短信發(fā)送狀態(tài)報(bào)告。
參數(shù)1:接收者手機(jī)號(hào)碼,參數(shù)2:短信內(nèi)容, 參數(shù)3:messageId即該條短信的唯一標(biāo)識(shí), 不能重復(fù)
返回結(jié)果是json格式的字符串, code: 發(fā)送狀態(tài),0為成功。非0為發(fā)送失敗,可從data中查看錯(cuò)誤信息
錯(cuò)誤代碼表
錯(cuò)誤碼
原因
解決方案
100
參數(shù)格式錯(cuò)誤
檢查請(qǐng)求參數(shù)是否為空, 或手機(jī)號(hào)碼格式錯(cuò)誤
101
短信內(nèi)容超過(guò)1000字
短信內(nèi)容過(guò)長(zhǎng),請(qǐng)篩檢或分多次發(fā)送
105
appId錯(cuò)誤或應(yīng)用不存在
請(qǐng)聯(lián)系工作人員申請(qǐng)應(yīng)用或檢查appId是否輸入錯(cuò)誤
106
應(yīng)用被禁止
請(qǐng)聯(lián)系工作人員查看原因
107
ip錯(cuò)誤
如果設(shè)置了ip白名單,系統(tǒng)會(huì)檢查請(qǐng)求服務(wù)器的ip地址,已確定是否為安全的來(lái)源訪問(wèn)
108
短信余額不足
需要到用戶中心進(jìn)行充值
109
今日發(fā)送超過(guò)限額
如果設(shè)置了日發(fā)送數(shù)量,則每個(gè)接收號(hào)碼不得超過(guò)這個(gè)數(shù)量
110
應(yīng)用秘鑰(AppSecret)錯(cuò)誤
檢查AppSecret是否輸入錯(cuò)誤,或是否已在用戶中心進(jìn)行了秘鑰重置
111
賬號(hào)不存在
請(qǐng)聯(lián)系工作人員申請(qǐng)賬號(hào)
1000
系統(tǒng)位置錯(cuò)誤
請(qǐng)聯(lián)系工作人員或技術(shù)人員檢查原因
3)查看余額
通過(guò)該接口可查看當(dāng)前剩余的短信條數(shù)
result = client.balance();
返回結(jié)果是 json 格式的字符串, code : 查詢狀態(tài),0為成功,data 為剩余短信條數(shù)。非0為查詢失敗,可從data中查看錯(cuò)誤信息
錯(cuò)誤代碼表同上
4)查詢短信
接口描述
根據(jù)messageId查詢已發(fā)送短信
result = client.findSmsByMessageId('dfee_dfdw_xdfd_dfdfd');
注: 必須是post請(qǐng)求,個(gè)人開(kāi)發(fā)者域名使用sms_developer.zhenzikj.com,企業(yè)開(kāi)發(fā)者域名使用sms.zhenzikj.com
請(qǐng)求參數(shù)
參數(shù)名稱
必選
類型
描述
appId
是
string
應(yīng)用id,可通過(guò)用戶中心,應(yīng)用詳情查看
appSecret
是
string
應(yīng)用秘鑰,可通過(guò)用戶中心,應(yīng)用詳情查看
messageId
是
string
信息id,對(duì)應(yīng)發(fā)送短信接口的messageId字段
返回結(jié)果
返回結(jié)果是json格式的字符串,code: 查詢狀態(tài),0為成功。非0為失敗,可從data中查看錯(cuò)誤信息
{
"code":0,
"data":{}
}
返回結(jié)果是json格式的字符串, code: 查詢狀態(tài),0為成功,data短信信息的json字符串
3.代碼
我們學(xué)習(xí)完文檔之后,學(xué)習(xí)到的代碼如下:
# -*- coding: utf-8 -*-
# @Time : 2019/7/22 15:00
# @Author : hang1720
# @Site :
# @File : send_message.py
# @Software: PyCharm
import zhenzismsclient as smsclient
# 生成隨機(jī)驗(yàn)證碼
import random
code = ""
for num in range(0, 6):
code = code + str(random.randint(0, 9))
# 參數(shù)
# apiUrl為請(qǐng)求地址
apiUrl = "http://sms_developer.zhenzikj.com"
appId = "101**6" # 請(qǐng)?jiān)谶@里輸入你的`appid`
appSecret = "YzNmY2MyNGItYz********Q0LWJhMTEtNjEyYTY3MWZjZDky" # 請(qǐng)?jiān)谶@里輸入你的`appSecret`
# 初始化ZhenziSmsClient
client = smsclient.ZhenziSmsClient(apiUrl, appId, appSecret)
phone_num = input("請(qǐng)輸入接受信息的手機(jī)號(hào):")
msg = "%s,您的驗(yàn)證碼是%s,5分鐘內(nèi)有效,請(qǐng)注意保密。" % (phone_num, code)
result = client.send(phone_num, msg)
print(result)
今天我們就先學(xué)習(xí)都這里,后面如何在項(xiàng)目中使用,等我們學(xué)完 redis ,我會(huì)再給大家講解。
總結(jié)
以上是生活随笔為你收集整理的python按照号段生成手机号接收验证码,「 python 」 python 实现短信验证码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: php 手机当扫描仪,只会用华为手机拍照
- 下一篇: Java WebIDE:CodeMirr