资讯专栏INFORMATION COLUMN

python自动化测试之破解图文验证码

89542767 / 341人阅读

  小编写这篇文章的主要目的,主要是用来给大家介绍关于python自动化测试的一些事情,涉及到的内容主要有包括破解图文验证码等相关的一些事宜,具体怎么才能够破解图文验证码呢?下面就给大家详细解答下。


  对于web应用程序来讲,处于安全性考虑,在登录的时候,都会设置验证码,


  验证码的类型种类繁多,有图片中辨别数字字母的,有点击图片中指定的文字的,也有算术计算结果的,再复杂一点就是滑动验证的。


  诸如此类的验证码,对我们的系统增加了安全性的保障,但是对于我们测试人员来讲,在自动化测试的过程中,无疑是一个棘手的问题。

01.png

  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动化测试破解滑动验证

      python作为一门比较常见的编程语言,在工作当中的应用还是比较的广泛的,比如可以对此进行相关的自动化测试,比如自动化测试相关的代码,另外还有破解滑动验证码。那么,具体的操作手法是怎样的呢?下面就给大家详细解答下。  在Web自动化测试的过程中,经常会被登录的验证码给卡住,不知道如何去通过验证码的验证。  一般的情况下遇到验证码我们可以都可以找开发去帮忙解决,关闭验证码,或者给一个万能的验证码...

    89542767 评论0 收藏0
  • 首次公开,整理12年积累的博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0
  • 总结 XSS 与 CSRF 两种跨站攻击

    摘要:但最近又听说了另一种跨站攻击,于是找了些资料了解了一下,并与放在一起做个比较。脚本中的不速之客全称跨站脚本,是注入攻击的一种。 XSS:跨站脚本(Cross-site scripting) CSRF:跨站请求伪造(Cross-site request forgery) 在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式。...

    jcc 评论0 收藏0
  • godaddy域名怎么转出去?godaddy将域名转出迁移的步骤教程

    摘要:域名域名怎么转出去是全球最大的域名主机服务商,近年来选择域名注册的人是非常多的,那也有朋友因为这样或那样的原因想要将域名从转移出来,那么具体要怎么操作呢让我们来了解一下。将域名转出迁移的步骤流程登录域名控制中心。godaddy域名怎么转出去?godaddy是全球最大的域名主机服务商,近年来选择域名注册的人是非常多的,那也有朋友因为这样或那样的原因想要将域名从Godaddy转移出来,那么具体要...

    番茄西红柿 评论0 收藏2637

发表评论

0条评论

最新活动
阅读需要支付1元查看
<