小編寫這篇文章的主要目的,主要是用來給大家介紹關(guān)于python自動化測試的一些事情,涉及到的內(nèi)容主要有包括破解圖文驗(yàn)證碼等相關(guān)的一些事宜,具體怎么才能夠破解圖文驗(yàn)證碼呢?下面就給大家詳細(xì)解答下。
對于web應(yīng)用程序來講,處于安全性考慮,在登錄的時(shí)候,都會設(shè)置驗(yàn)證碼,
驗(yàn)證碼的類型種類繁多,有圖片中辨別數(shù)字字母的,有點(diǎn)擊圖片中指定的文字的,也有算術(shù)計(jì)算結(jié)果的,再復(fù)雜一點(diǎn)就是滑動驗(yàn)證的。
諸如此類的驗(yàn)證碼,對我們的系統(tǒng)增加了安全性的保障,但是對于我們測試人員來講,在自動化測試的過程中,無疑是一個(gè)棘手的問題。
1、Web自動化驗(yàn)證碼解決方案
一般在我們測試過程中,登錄遇到上述的驗(yàn)證碼的時(shí)候,有以下種解決方案:
第一種、讓開發(fā)去掉驗(yàn)證碼
第二種、設(shè)置一個(gè)萬能的驗(yàn)證碼
第三種、通過cookie繞過登錄
第四種、自動識別技術(shù)識別驗(yàn)證碼
2、驗(yàn)證碼解決方案
#coding:utf-8 import os import subprocess from PIL import Image def get_captcha(driver,captcha_id,full_screen_img_path,captcha_img_path,captcha_final_path,txt_path,ocr_path): #瀏覽器界面截圖 driver.save_screenshot(full_screen_img_path) #找到驗(yàn)證碼圖片,得到它的坐標(biāo) element=driver.find_element_by_id(captcha_id) left=element.location['x'] top=element.location['y'] right=element.location['x']+element.size['width'] bottom=element.location['y']+element.size['height'] left,top,right,bottom=int(left),int(top),int(right),int(bottom) img=Image.open(full_screen_img_path) img=img.crop((left,top,right,bottom)) #得到驗(yàn)證碼圖片 img.save(captcha_img_path) #打開驗(yàn)證碼圖片 img=Image.open(captcha_img_path) #顏色直方圖,255種顏色,255為白色 #新建一張圖片(大小和原圖大小相同,背景顏色為255白色) img_new=Image.new('P',img.size,255) for x in range(img.size[1]): for y in range(img.size[0]): #遍歷圖片的xy坐標(biāo)像素點(diǎn)顏色 pix=img.getpixel((y,x)) #print(pix) #自己調(diào)色,r=0,g=0,b>0為藍(lán)色 if pix[0]<20 and pix[1]<20 and pix[2]>50: #把遍歷的結(jié)果放到新圖片上,0為透明度,不透明 img_new.putpixel((y,x),0) img_new.save(captcha_final_path,format='png') #通過tesseract工具解析驗(yàn)證碼圖片,生成文本 os.system(ocr_path) #讀取txt文件里面的驗(yàn)證碼 with open(txt_path,'r')as f: if f.read(): t=f.read().strip() #去掉中間空格 if''in t: t=t.replace('','') if t.isdigit()and len(t)==4: return t else: return'fail' def check_resp(result,msg): if msg in result: return'pass' else: return'failed' #接口-識別驗(yàn)證碼 def get_captcha(captcha_img_path,captcha_final_path,txt_path,ocr_path): #打開驗(yàn)證碼圖片 img=Image.open(captcha_img_path) #新建一張圖片(大小和原圖大小相同,背景顏色為255白色) img_new=Image.new('P',img.size,55) for x in range(img.size[1]): for y in range(img.size[0]): #遍歷圖片的xy坐標(biāo)像素點(diǎn)顏色 pix=img.getpixel((y,x)) #print(pix) #自己調(diào)色,r=0,g=0,b>0為藍(lán)色 if pix[0]<20 and pix[1]<20 and pix[2]>50: #把遍歷的結(jié)果放到新圖片上,0為透明度,不透明 img_new.putpixel((y,x),0) img_new.save(captcha_final_path,format='png') #通過tesseract工具解析驗(yàn)證碼圖片,生成文本,【Tesseract-OCR必須和jpg的根目錄必須相同,如C盤、D盤?。?!】 os.system(ocr_path) #讀取txt文件里面的驗(yàn)證碼 with open(txt_path,'r')as f: if r.read(): t=f.read().strip() #去掉中間空格 if''in t: t=t.replace('','') #如果是數(shù)字且長度為4,就返回?cái)?shù)字,如果不是就返回fail if t.isdigit()and len(t)==4: return t else: return fail
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)韼椭?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/128428.html
python作為一門比較常見的編程語言,在工作當(dāng)中的應(yīng)用還是比較的廣泛的,比如可以對此進(jìn)行相關(guān)的自動化測試,比如自動化測試相關(guān)的代碼,另外還有破解滑動驗(yàn)證碼。那么,具體的操作手法是怎樣的呢?下面就給大家詳細(xì)解答下?! ≡赪eb自動化測試的過程中,經(jīng)常會被登錄的驗(yàn)證碼給卡住,不知道如何去通過驗(yàn)證碼的驗(yàn)證。 一般的情況下遇到驗(yàn)證碼我們可以都可以找開發(fā)去幫忙解決,關(guān)閉驗(yàn)證碼,或者給一個(gè)萬能的驗(yàn)證碼...
摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:但最近又聽說了另一種跨站攻擊,于是找了些資料了解了一下,并與放在一起做個(gè)比較。腳本中的不速之客全稱跨站腳本,是注入攻擊的一種。 XSS:跨站腳本(Cross-site scripting) CSRF:跨站請求偽造(Cross-site request forgery) 在那個(gè)年代,大家一般用拼接字符串的方式來構(gòu)造動態(tài) SQL 語句創(chuàng)建應(yīng)用,于是 SQL 注入成了很流行的攻擊方式。...
摘要:域名域名怎么轉(zhuǎn)出去是全球最大的域名主機(jī)服務(wù)商,近年來選擇域名注冊的人是非常多的,那也有朋友因?yàn)檫@樣或那樣的原因想要將域名從轉(zhuǎn)移出來,那么具體要怎么操作呢讓我們來了解一下。將域名轉(zhuǎn)出遷移的步驟流程登錄域名控制中心。godaddy域名怎么轉(zhuǎn)出去?godaddy是全球最大的域名主機(jī)服務(wù)商,近年來選擇域名注冊的人是非常多的,那也有朋友因?yàn)檫@樣或那樣的原因想要將域名從Godaddy轉(zhuǎn)移出來,那么具體要...
閱讀 923·2023-01-14 11:38
閱讀 895·2023-01-14 11:04
閱讀 756·2023-01-14 10:48
閱讀 2055·2023-01-14 10:34
閱讀 961·2023-01-14 10:24
閱讀 840·2023-01-14 10:18
閱讀 510·2023-01-14 10:09
閱讀 588·2023-01-14 10:02