python接入百度文字識(shí)別獲取登錄校驗(yàn)碼

pip install baidu-aip
背景:項(xiàng)目在做接口自動(dòng)化測(cè)試,登錄接口進(jìn)行了改造嗜湃,由之前的用戶名+密碼的方式改造為:用戶名+密碼+圖片驗(yàn)證碼
一:解決方案:
1.在項(xiàng)目配置文件中注釋sso登錄驗(yàn)證奈应,讓接口不進(jìn)行token驗(yàn)證
調(diào)研:項(xiàng)目中服務(wù)拆分過(guò)多,需要在測(cè)試環(huán)境每個(gè)服務(wù)需要進(jìn)行操作购披,而且部服務(wù)是外組合作杖挣,也有接口權(quán)限驗(yàn)證,還需跨組去修改服務(wù)刚陡,比較麻煩惩妇。而且作為測(cè)試環(huán)境,接口權(quán)限驗(yàn)證筐乳,token失效對(duì)于項(xiàng)目的驗(yàn)證也是測(cè)試的一部分歌殃,不太合適
2.網(wǎng)上其他還有提供說(shuō)是讓開(kāi)發(fā)屏蔽圖片驗(yàn)證,和萬(wàn)能驗(yàn)證碼
調(diào)研:這種其實(shí)也可以蝙云,但是測(cè)試開(kāi)發(fā)環(huán)境在代碼中并不能保持一直氓皱,我們每次測(cè)試完成,都是獲取測(cè)試環(huán)境下的分支進(jìn)行打包發(fā)布,一不小心可能把改造過(guò)后的打包進(jìn)去了
3.自動(dòng)化測(cè)試中獲取圖片中的驗(yàn)證碼波材,進(jìn)行登錄接口權(quán)限校驗(yàn)
調(diào)研:現(xiàn)在有比較多的公司比比如百度股淡,提供一些圖片文字識(shí)別的接口,可以獲取到驗(yàn)證碼廷区,進(jìn)行接口登錄唯灵,我是用的就是百度的api
二:百度文字識(shí)別接入
1.首先注冊(cè)并且登錄百度ai平臺(tái)賬號(hào),https://login.bce.baidu.com/

image.png

2.進(jìn)入文字識(shí)別菜單下隙轻,創(chuàng)建你的項(xiàng)目應(yīng)用埠帕,生成對(duì)應(yīng)的key,接入到項(xiàng)目玖绿,并且開(kāi)通你要使用的接口
image.png

image.png

備注:接口調(diào)用每天是有次數(shù)限制的敛瓷,我使用的高精度版本的文字識(shí)別,識(shí)別的準(zhǔn)確率更高镰矿,每天免費(fèi)500次琐驴,跑一次接口項(xiàng)目只用獲取一次,500夠用了
3.在項(xiàng)目中調(diào)用

  • 安裝百度api依賴:pip install baidu_aip秤标,并且導(dǎo)入到文件內(nèi):from aip import AipOcr
  • 調(diào)用項(xiàng)目中加載圖片的接口绝淡,獲取圖片和圖片的id,并且把圖片保存到本地
def getImage():
    res = Request('debug').get_request('你的圖片獲取地址', None, None)
    data = res['data']
    image = data['image'].split(',')
#獲取圖片的imageId,這個(gè)作為參數(shù)放到登錄接口
    imageId = data['imageId']
    pic_url = image[1]
#base64轉(zhuǎn)碼圖片
    imagedata = base64.b64decode(pic_url)
#保存圖片都項(xiàng)目文件夾下Pic/下苍姜,每次命名為code.png
    file = open('../Pic/code.png', "wb")
    file.write(imagedata)
    file.close()
#方法返回一個(gè)imageId
    return imageId
  • 調(diào)用百度接口牢酵,識(shí)別保存的驗(yàn)證碼
def getNumFromImage():
    # encoding:utf-8
    """ APPID"""
    APP_ID = '你在百度平臺(tái)應(yīng)用的id'
    API_KEY = '應(yīng)用的key'
    SECRET_KEY = '應(yīng)用的SECRET_KEY'
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

    # Read Image
    def get_file_content(filePath):
        with open(filePath, 'rb') as fp:
            return fp.read()
#調(diào)用的百度的高精度識(shí)別文字接口,每次識(shí)別Pic下的code.png
    result1 = client.basicAccurate(get_file_content('../Pic/code.png'))
#處理返回?cái)?shù)據(jù)衙猪,最終只得到圖片上的驗(yàn)證碼
    words = result1['words_result']
    print(str(words[0]['words']))
    codeWord = str(words[0]['words'])
    return codeWord
  • 登錄接口獲取token
def login():
    num = 0
    #登錄
    while num < 5:
#拿到圖片id
        imageId = getImage()
#拿到圖片驗(yàn)證碼
        imageCode = getNumFromImage()
#登錄參數(shù)用戶名馍乙,密碼,圖片驗(yàn)證碼垫释,對(duì)應(yīng)的圖片id
        loginData = {"account": "your account", "imageCode": imageCode, "imageId": imageId,
                     "password": "your pwd"}
        res = Request('debug').post_request('your login api', loginData, None)
#處理登錄接口的返回
        tokenData = res['body']['data']
#接口返回的data不為空說(shuō)明登錄成功了丝格,拿到了登錄信息
        if tokenData is not None:
            token = tokenData['token']
            break
#處理驗(yàn)證碼錯(cuò)誤的情況下,登錄失敗拿不到token棵譬,再進(jìn)行獲取也驗(yàn)證显蝌,控制循環(huán)5次
        else:
            num = num + 1

    if (num == 4):
        print('調(diào)用圖片驗(yàn)證碼5次,依然沒(méi)有找到token')

    return token

備注:這個(gè)接口識(shí)別四位數(shù)的驗(yàn)證碼準(zhǔn)確度比較高订咸,但是還是會(huì)有錯(cuò)的情況曼尊,沒(méi)有登錄成功,繼續(xù)循環(huán)脏嚷,在我測(cè)試下骆撇,基本上5次循環(huán)一定會(huì)登錄成功。

  • 拿到token就可以塞到請(qǐng)求參數(shù)中父叙,進(jìn)行接口測(cè)試了
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末神郊,一起剝皮案震驚了整個(gè)濱河市肴裙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌涌乳,老刑警劉巖践宴,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異爷怀,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)带欢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門运授,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人乔煞,你說(shuō)我怎么就攤上這事吁朦。” “怎么了渡贾?”我有些...
    開(kāi)封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵逗宜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我空骚,道長(zhǎng)纺讲,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任囤屹,我火速辦了婚禮熬甚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肋坚。我一直安慰自己乡括,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布智厌。 她就那樣靜靜地躺著诲泌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪铣鹏。 梳的紋絲不亂的頭發(fā)上敷扫,一...
    開(kāi)封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音吝沫,去河邊找鬼呻澜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛惨险,可吹牛的內(nèi)容都是我干的羹幸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼辫愉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼栅受!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤屏镊,失蹤者是張志新(化名)和其女友劉穎依疼,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體而芥,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡律罢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了棍丐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片误辑。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖歌逢,靈堂內(nèi)的尸體忽然破棺而出巾钉,到底是詐尸還是另有隱情,我是刑警寧澤秘案,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布砰苍,位于F島的核電站,受9級(jí)特大地震影響阱高,放射性物質(zhì)發(fā)生泄漏赚导。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一讨惩、第九天 我趴在偏房一處隱蔽的房頂上張望辟癌。 院中可真熱鬧,春花似錦荐捻、人聲如沸黍少。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)厂置。三九已至,卻和暖如春魂角,著一層夾襖步出監(jiān)牢的瞬間昵济,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工野揪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留访忿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓斯稳,卻偏偏與公主長(zhǎng)得像海铆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子挣惰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容