python對(duì)接ihuyi實(shí)現(xiàn)短信驗(yàn)證碼發(fā)送
在日常生活中我們經(jīng)常會(huì)遇到接收短信驗(yàn)證碼的場(chǎng)景,Python也提供了簡(jiǎn)便的方法實(shí)現(xiàn)這個(gè)功能,下面就用代碼來(lái)實(shí)現(xiàn)這個(gè)功能。
一般我們需要租借短信供應(yīng)商的服務(wù)器發(fā)送短信。如果是用于自學(xué)會(huì)有一定免費(fèi)條數(shù)的限額。
我們就借用互憶的平臺(tái)來(lái)是實(shí)現(xiàn)代碼。
首先需要訪問(wèn)http://www.ihuyi.com/sms.html注冊(cè)私人賬號(hào),注冊(cè)完之后進(jìn)入個(gè)人信息界面會(huì)看到自己的賬號(hào)和密鑰。
所需導(dǎo)入的包:
import requests,random,bs4
requests模塊用于發(fā)送請(qǐng)求,random模塊用于產(chǎn)生驗(yàn)證碼,bs4模塊用于解析服務(wù)器響應(yīng)信息。如果沒(méi)有安裝這些包,打開(kāi)cmd,輸入pip install 包名 進(jìn)行安裝。
一般手機(jī)驗(yàn)證碼都是隨機(jī)四位數(shù),所以我們用一個(gè)函數(shù)來(lái)實(shí)現(xiàn),主要用random函數(shù)產(chǎn)生4位隨機(jī)數(shù)并返回。
def create_verify_code(): '''隨機(jī)產(chǎn)生一個(gè)4位數(shù)驗(yàn)證碼''' verify_code = ’’ for i in range(4): verify_code += str(random.randint(0,9)) return verify_code
接著就要利用供應(yīng)商的API接口來(lái)發(fā)送短信,API文檔在互憶官網(wǎng)上就能下載到或者到自己賬戶中就能找到。
headers用于構(gòu)造請(qǐng)求頭,我們只需傳入手機(jī)號(hào)和要發(fā)送的文本,然后利用requests發(fā)送post請(qǐng)求給服務(wù)器,就會(huì)收到返回信息。
def sendmessagecode(phonenum,content): '''發(fā)送短信驗(yàn)證碼''' headers = {'Content-type': 'application/x-www-form-urlencoded', 'Accept': 'text/plain'} data = {’account’:account,’password’:password,’mobile’:phonenum,’content’:content} return requests.post(host,data=data,headers=headers)
在收到服務(wù)器返回信息后,我們就可以解析信息,來(lái)判斷服務(wù)器是否發(fā)送成功。
response = sendmessagecode(phoneNum,content) # 用response來(lái)接收響應(yīng)信息
判斷是否與服務(wù)器聯(lián)通,若鏈接成功再進(jìn)行下一步,否則打印失敗信息。
if 200 == response.status_code: TODO... else: print(’與服務(wù)器連接失敗:’,response.status_code)
若響應(yīng)成功,就利用BeautifulSoup來(lái)解析響應(yīng)信息。
soup = bs4.BeautifulSoup(response.text,features=’lxml’) # 構(gòu)造soup對(duì)象code = soup.find(’code’).string msg = soup.find(’msg’).stringif 2 == code: # 若服務(wù)器響應(yīng)碼為2,說(shuō)明短信發(fā)送成功 print(’code: %s msg: %s ’ %(code,msg))else: print(’code: %s msg: %s ’ %(code,msg))
全文代碼:
#! python3# 測(cè)試發(fā)送短信,所用服務(wù)器為互億測(cè)試賬號(hào)import requests,random,bs4 host = ’http://106.ihuyi.com/webservice/sms.php?method=Submit’account = ’C27187646’password = ’64713042f161ae0555e9617afef40610’ def sendmessagecode(phonenum,content): '''發(fā)送短信驗(yàn)證碼''' headers = {'Content-type': 'application/x-www-form-urlencoded', 'Accept': 'text/plain'} data = {’account’:account,’password’:password,’mobile’:phonenum,’content’:content} return requests.post(host,data=data,headers=headers) def create_verify_code(): '''隨機(jī)產(chǎn)生一個(gè)4位數(shù)驗(yàn)證碼''' verify_code = ’’ for i in range(4): verify_code += str(random.randint(0,9)) return verify_code if __name__ == ’__main__’: phoneNum = ’159XXXXXXXX’ code = create_verify_code() content = ’您的驗(yàn)證碼是:%s。請(qǐng)不要把驗(yàn)證碼泄露給其他人。’ %code response = sendmessagecode(phoneNum,content) print(’短信內(nèi)容:’,content) if 200 == response.status_code: soup = bs4.BeautifulSoup(response.text,features=’lxml’) code = soup.find(’code’).string msg = soup.find(’msg’).string if 2 == code: print(’code: %s msg: %s ’ %(code,msg)) else: print(’code: %s msg: %s ’ %(code,msg)) else: print(’與服務(wù)器連接失敗:’,response.status_code)
以上就是python對(duì)接ihuyi實(shí)現(xiàn)短信驗(yàn)證碼發(fā)送的詳細(xì)內(nèi)容,更多關(guān)于python短信驗(yàn)證碼發(fā)送實(shí)例的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5動(dòng)態(tài)(可拖動(dòng)控件大小)布局控件QSplitter詳細(xì)使用方法與實(shí)例2. vue跳轉(zhuǎn)頁(yè)面常用的幾種方法匯總3. 不要在HTML中濫用div4. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)5. js開(kāi)發(fā)中的頁(yè)面、屏幕、瀏覽器的位置原理(高度寬度)說(shuō)明講解(附圖)6. CSS清除浮動(dòng)方法匯總7. XML 非法字符(轉(zhuǎn)義字符)8. 父div高度不能自適應(yīng)子div高度的解決方案9. ASP動(dòng)態(tài)include文件10. XML入門的常見(jiàn)問(wèn)題(三)
