一、验证码的作用

很多注册登录页面都会采用验证码来防止恶意登录和注册,通过每次刷新后返回不同的验证码,可以排除用其他病毒或者软件自动申请注册或者登录的操作,还可以在一定程度上减少网站的并发量。

二、自动化测试处理验证码的几种方式

1.去掉验证码

即让开发人员直接注释掉验证码相关的代码即可

2.设置万能码

让开发在程序中声明一个只提供给自动化测试人员的万能验证码,用户无法获取。这样,程序就可以使用万能验证码通过验证,从而完成自动化操作。

3.只保留一个图片资源

如果验证码是图片的形式,实际就是在指定的文件夹资源库中随机抽取一张,只需要将服务器上的所有图片全部删除只剩一张,相当于固定验证码

4.光学字符识别

用第三方模块pytesseract来识别图片中的验证码

5.通过cookie

在selenium中通过add_cookie()方法将用户名、密码写入浏览器的cookie中,当再次访问网站时服务器只需读取浏览器的cookie就可以完成登录

6.通过cv2模块(opencv库)

可以通过opencv库来处理滑块验证码

三.滑块验证码的处理

本文以豆瓣官网(豆瓣)的密码登录为例

import requests
from selenium import webdriver
import cv2#1.打开网页显示验证码
from selenium.webdriver import ActionChainsdriver=webdriver.Chrome()
driver.implicitly_wait(10)
while True:driver.get("https://www.douban.com/")driver.switch_to.frame(driver.find_element_by_xpath("//*[@id='anony-reg-new']/div/div[1]/iframe"))driver.find_element_by_xpath("/html/body/div[1]/div[1]/ul[1]/li[2]").click()driver.find_element_by_xpath("//*[@id='username']").send_keys("admin")driver.find_element_by_xpath('//*[@id="password"]').send_keys("123")driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[5]/a').click()#2.获取滑块及滑板的地址driver.switch_to.frame((driver.find_element_by_xpath('//*[@id="tcaptcha_iframe"]')))big_parent_picture_url=driver.find_element_by_xpath("//*[@id='cdn1']").get_attribute("src")print(big_parent_picture_url)small_parent_picture_url=driver.find_element_by_xpath("//*[@id='cdn2']").get_attribute("src")#3.下载滑块和滑板图with open("../images/big_images.jpg","wb") as f:f.write(requests.get(big_parent_picture_url).content)f.close()with open("../images/small_images.jpg", "wb") as f:f.write(requests.get(small_parent_picture_url).content)f.close()#4.人工智能匹配滑块和滑板的小图重叠后x轴的距离big_gray=cv2.imread("../images/big_images.jpg",0)small_gray = cv2.imread("../images/small_images.jpg", 0)res=cv2.matchTemplate(big_gray,small_gray,cv2.TM_CCORR_NORMED) #匹配模式value=cv2.minMaxLoc(res)x=value[2][0]print(x)#5.缩放比例以及校准滑块偏移量,原图是680*390,实际是282*162x=int(x*282/680)py=31-int(20*282/680)x=x-py#6.通过ActionChains滑动解锁hk_ele=driver.find_element_by_xpath('//*[@id="slideBlock"]')action=ActionChains(driver) #初始化一个鼠标对象action.click_and_hold(hk_ele).perform() #鼠标按住左键不动action.drag_and_drop_by_offset(hk_ele,x,0).perform() #把滑块滑动到指定的位置#7.滑动失败启动重试机制try:driver.find_element_by_xpath('//*[@id="reload"]/div')except Exception as e:break

自动化之滑块验证码的处理相关推荐

  1. Python + selenium自动化工具 + 滑块验证码+点选验证码,实现模拟登录“中国铁路网12306”

    文章目录 一.模拟登录"中国铁路网12306 1.引入库 2.初始化 3.将点选验证码图片,通过人工打码,返回目标像素位置(json格式). 4.点选验证码位置得到后,需要鼠标左击进行模拟人 ...

  2. APP爬虫过滑块验证码的一种思路, 从此不再依赖打码平台

    每一个想学习的念头,都有可能是未来的你在向自己求救. 最近在学习 APP 逆向的道路上遇到一个 APP,当请求接口频繁的时候,会触发风控提示需要滑动验证码.验证码类型/风格类似下图: 经过分析发现,当 ...

  3. 小小滑块可笑可笑-安卓滑块验证码通杀方案研究(2)

    说明 文章首发于HURUWO的博客小站,本平台做同步备份发布. 如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论回复. 原文链接 小小滑块可笑可笑-安卓滑块验证码通杀方案研究2直接点击即可 ...

  4. 小小滑块可笑可笑-安卓滑块验证码通杀方案研究(1)

    说明 文章首发于HURUWO的博客小站,本平台做同步备份发布. 如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览. 小小滑块可笑可笑-安卓滑块验证码通杀方案研究(1) 直接点击即可前往 ...

  5. Python使用selenium过天眼查滑块验证码反爬实现模拟登录

    Python使用selenium过天眼查滑块验证码反爬实现模拟登录 天眼查的滑块验证码样式 一顿操作到滑块验证码阶段 破解滑块验证码 结束 天眼查的滑块验证码样式 在输入账号和密码后会发现这个令人讨厌 ...

  6. Selenium模拟登录系列 | 淘宝滑块验证码破解!不难嘛!

    导 语 好久没更新了,上来冒个泡吧.各位小伙伴还记得前段时间号主挖过的一个坑嘛(虽然我曾经挖过无数个坑T_T): Selenium模拟登录系列 | B站滑块验证码破解 今天随手更新了一下Seleniu ...

  7. selenium+java破解极验滑块验证码

    最近在做自动化注册的程序,里面需要一个破解滑块验证码的工具.在网上搜了一些资料,最后以B站的登录验证为例展示出来.使用的技术就是selenium+java,jar包方面为了方便使用maven引入. 代 ...

  8. glidedsky挑战-滑块验证码反爬(腾讯防水墙滑块验证码)

    相应页面(http://glidedsky.com/level/web/crawler-captcha-1) 题目要求: 先看看页面: 当我们一打开页面,就是出现滑块验证码页面,我们所要的数字参数是没 ...

  9. Web自动化处理“滑动验证码”

    即便乌云尽染天空,旭阳依然在某处照耀 验证码的种类有很多,我们常见的有短信验证码.语音验证码.字符验证码.图片验证码.滑动验证码等.今天主要给小伙伴们分享在web自动化测试中,如何处理滑动验证码? 首 ...

最新文章

  1. 类风湿性关节炎患者腕关节的多普勒超声积分与OMERACT RAMRIS骨髓水肿和滑膜相关...
  2. 038_JavaScript对象
  3. Python远程操作Oracle实现一键备份还原数据库演示,利用socket进行imp、exp一键导入导出oracle数据库dmp文件
  4. 5、MySQL事务隔离级别详解
  5. AEAI ESB路由转换机制说明
  6. 28 Java类的加载机制、什么是类的加载、类的生命周期、加载:查找并加载类的二进制数据、连接、初始化、类加载器、双亲委派模型、自定义类加载器
  7. 解决 Intellij IDEA 文件图标一直闪烁
  8. 从1.5k到18k, 一个程序员的5年成长之路(分享)
  9. 牛客 13822 Keep In Line(枚举与暴力、Python)
  10. centos 安装低版本内核_Docker安装教程
  11. 25,000,000 行的代码就问你敢不敢动?!
  12. 编程之美2014 热身赛 题目3 : 树上的三角形
  13. VMware ESX 5.0 网卡负载均衡配置3种方法
  14. python如何输出结果为16_python 以16进制打印输出的方法
  15. Mac安装Qt出现错误Could not resolve SDK Path for ‘macosx‘
  16. MT7628处理器介绍,MT7628芯片原理图资料
  17. 元宇宙:从现实到虚无祛魅的产物|广州华锐互动
  18. 将csv格式转换为excel后缀为xlsx
  19. 关于网络下载的记忆碎片
  20. 关于field-of-view和receptive field

热门文章

  1. 情绪管理:如何与狼相处?
  2. spring boot实战之XSS过滤
  3. 返回的数据不符合规范,正确的成功状态码 (code) 应为:0解决方案
  4. php 风水起名网站源代码_开运网付费开源商业版 PHP风水起名八字算命易经周易源码...
  5. iOS四种方法读取文件内容
  6. 思科模拟器实验4:静态路由,默认路由配置
  7. 什么是PV、UV和PR值
  8. 【知乎】智能WIFI的商业模式
  9. 再谈排序算法的pairwise,pointwise,listwise
  10. Linux内核争抢式并发在SMP多核扩展上的不足