小編寫這篇文章的主要目的,主要是用來給大家介紹關于python自動化測試的一些事情,涉及到的內容主要有包括破解圖文驗證碼等相關的一些事宜,具體怎么才能夠破解圖文驗證碼呢?下面就給大家詳細解答下。
對于web應用程序來講,處于安全性考慮,在登錄的時候,都會設置驗證碼,
驗證碼的類型種類繁多,有圖片中辨別數字字母的,有點擊圖片中指定的文字的,也有算術計算結果的,再復雜一點就是滑動驗證的。
諸如此類的驗證碼,對我們的系統增加了安全性的保障,但是對于我們測試人員來講,在自動化測試的過程中,無疑是一個棘手的問題。
1、Web自動化驗證碼解決方案
一般在我們測試過程中,登錄遇到上述的驗證碼的時候,有以下種解決方案:
第一種、讓開發去掉驗證碼
第二種、設置一個萬能的驗證碼
第三種、通過cookie繞過登錄
第四種、自動識別技術識別驗證碼
2、驗證碼解決方案
#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) #找到驗證碼圖片,得到它的坐標 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)) #得到驗證碼圖片 img.save(captcha_img_path) #打開驗證碼圖片 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坐標像素點顏色 pix=img.getpixel((y,x)) #print(pix) #自己調色,r=0,g=0,b>0為藍色 if pix[0]<20 and pix[1]<20 and pix[2]>50: #把遍歷的結果放到新圖片上,0為透明度,不透明 img_new.putpixel((y,x),0) img_new.save(captcha_final_path,format='png') #通過tesseract工具解析驗證碼圖片,生成文本 os.system(ocr_path) #讀取txt文件里面的驗證碼 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' #接口-識別驗證碼 def get_captcha(captcha_img_path,captcha_final_path,txt_path,ocr_path): #打開驗證碼圖片 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坐標像素點顏色 pix=img.getpixel((y,x)) #print(pix) #自己調色,r=0,g=0,b>0為藍色 if pix[0]<20 and pix[1]<20 and pix[2]>50: #把遍歷的結果放到新圖片上,0為透明度,不透明 img_new.putpixel((y,x),0) img_new.save(captcha_final_path,format='png') #通過tesseract工具解析驗證碼圖片,生成文本,【Tesseract-OCR必須和jpg的根目錄必須相同,如C盤、D盤!!!】 os.system(ocr_path) #讀取txt文件里面的驗證碼 with open(txt_path,'r')as f: if r.read(): t=f.read().strip() #去掉中間空格 if''in t: t=t.replace('','') #如果是數字且長度為4,就返回數字,如果不是就返回fail if t.isdigit()and len(t)==4: return t else: return fail
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家帶來幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/128428.html
python作為一門比較常見的編程語言,在工作當中的應用還是比較的廣泛的,比如可以對此進行相關的自動化測試,比如自動化測試相關的代碼,另外還有破解滑動驗證碼。那么,具體的操作手法是怎樣的呢?下面就給大家詳細解答下。 在Web自動化測試的過程中,經常會被登錄的驗證碼給卡住,不知道如何去通過驗證碼的驗證。 一般的情況下遇到驗證碼我們可以都可以找開發去幫忙解決,關閉驗證碼,或者給一個萬能的驗證碼...
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:但最近又聽說了另一種跨站攻擊,于是找了些資料了解了一下,并與放在一起做個比較。腳本中的不速之客全稱跨站腳本,是注入攻擊的一種。 XSS:跨站腳本(Cross-site scripting) CSRF:跨站請求偽造(Cross-site request forgery) 在那個年代,大家一般用拼接字符串的方式來構造動態 SQL 語句創建應用,于是 SQL 注入成了很流行的攻擊方式。...
摘要:域名域名怎么轉出去是全球最大的域名主機服務商,近年來選擇域名注冊的人是非常多的,那也有朋友因為這樣或那樣的原因想要將域名從轉移出來,那么具體要怎么操作呢讓我們來了解一下。將域名轉出遷移的步驟流程登錄域名控制中心。godaddy域名怎么轉出去?godaddy是全球最大的域名主機服務商,近年來選擇域名注冊的人是非常多的,那也有朋友因為這樣或那樣的原因想要將域名從Godaddy轉移出來,那么具體要...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1983·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02