小编写这篇文章的主要目的,主要是用来给大家介绍关于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
综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/128428.html
python作为一门比较常见的编程语言,在工作当中的应用还是比较的广泛的,比如可以对此进行相关的自动化测试,比如自动化测试相关的代码,另外还有破解滑动验证码。那么,具体的操作手法是怎样的呢?下面就给大家详细解答下。 在Web自动化测试的过程中,经常会被登录的验证码给卡住,不知道如何去通过验证码的验证。 一般的情况下遇到验证码我们可以都可以找开发去帮忙解决,关闭验证码,或者给一个万能的验证码...
摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...
摘要:但最近又听说了另一种跨站攻击,于是找了些资料了解了一下,并与放在一起做个比较。脚本中的不速之客全称跨站脚本,是注入攻击的一种。 XSS:跨站脚本(Cross-site scripting) CSRF:跨站请求伪造(Cross-site request forgery) 在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式。...
摘要:域名域名怎么转出去是全球最大的域名主机服务商,近年来选择域名注册的人是非常多的,那也有朋友因为这样或那样的原因想要将域名从转移出来,那么具体要怎么操作呢让我们来了解一下。将域名转出迁移的步骤流程登录域名控制中心。godaddy域名怎么转出去?godaddy是全球最大的域名主机服务商,近年来选择域名注册的人是非常多的,那也有朋友因为这样或那样的原因想要将域名从Godaddy转移出来,那么具体要...
阅读 909·2023-01-14 11:38
阅读 876·2023-01-14 11:04
阅读 739·2023-01-14 10:48
阅读 1980·2023-01-14 10:34
阅读 941·2023-01-14 10:24
阅读 818·2023-01-14 10:18
阅读 498·2023-01-14 10:09
阅读 571·2023-01-14 10:02