用Python爬虫破解滑动验证码的案例解析


Posted in Python onMay 06, 2021

做爬虫总会遇到各种各样的反爬限制,反爬的第一道防线往往在登录就出现了,为了限制爬虫自动登录,各家使出了浑身解数,所谓道高一尺魔高一丈。

今天分享个如何简单处理滑动图片的验证码的案例。

用Python爬虫破解滑动验证码的案例解析


类似这种拖动滑块移动到图片中缺口位置与之重合的登录验证在很多网站或者APP都比较常见,因为它对真实用户体验友好,容易识别。同时也能拦截掉大部分初级爬虫。

作为一只python爬虫,如何正确地自动完成这个验证过程呢?

先来分析下,核心问题其实是要怎么样找到目标缺口的位置,一旦知道了位置,我们就可以借用selenium等工具完成拖动的操作。

我们可以借用opencv来解决这个问题,主要步骤:

用Python爬虫破解滑动验证码的案例解析

opencv 是什么?

OpenCV(Open Source Computer Vision Library)是开放源代码计算机视觉库,主要算法涉及图像处理、计算机视觉和机器学习相关方法,可用于开发实时的图像处理、计算机视觉以及模式识别程序。

直接安装

用Python爬虫破解滑动验证码的案例解析

首先将图片进行高斯模糊处理,高斯模糊的主要作用是减少图像的噪声,用于预处理阶段。

用Python爬虫破解滑动验证码的案例解析

处理后的效果

用Python爬虫破解滑动验证码的案例解析

接着用Canny边缘检测到得到一个包含“窄边界”的二值图像。所谓二值图像就是黑白图,只有黑色和白色。

用Python爬虫破解滑动验证码的案例解析

用Python爬虫破解滑动验证码的案例解析

轮廓检测

用Python爬虫破解滑动验证码的案例解析

找出所有的轮廓,并用红色线框将其绘制标识出来了,看出来大大小小有几十个轮廓

用Python爬虫破解滑动验证码的案例解析

剩下的问题就好办了,我们只需要对轮廓的面积或者周长范围做限制,就能过滤出目标轮廓的位置, 前提是我们对目标位置的轮廓大小是预先确定的。

用Python爬虫破解滑动验证码的案例解析

轮廓的面积大概是6000到8000之间,周长在300到500之间, 最后用外接矩形获取该轮廓图的坐标位置和宽高大小。

用Python爬虫破解滑动验证码的案例解析

如上就找到了目标位置,剩下的工作就是将滑块移动到指定位置即可

到此这篇关于用Python爬虫破解滑动验证码的案例解析的文章就介绍到这了,更多相关Python爬虫破解滑动验证码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
简单介绍Python下自己编写web框架的一些要点
Apr 29 Python
Python实现的简单算术游戏实例
May 26 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
Feb 17 Python
Python tkinter模块中类继承的三种方式分析
Aug 08 Python
Python 实现简单的shell sed替换功能(实例讲解)
Sep 29 Python
基于使用paramiko执行远程linux主机命令(详解)
Oct 16 Python
详解Python异常处理中的Finally else的功能
Dec 29 Python
python opencv读mp4视频的实例
Dec 07 Python
python创造虚拟环境方法总结
Mar 04 Python
Python3使用 GitLab API 进行批量合并分支
Oct 15 Python
python中常用的数据结构介绍
Jan 12 Python
Django中template for如何使用方法
Jan 31 Python
python本地文件服务器实例教程
python字符串常规操作大全
python自动化之如何利用allure生成测试报告
python使用openpyxl库读写Excel表格的方法(增删改查操作)
Python time库的时间时钟处理
Django项目如何获得SSL证书与配置HTTPS
Python基础之常用库常用方法整理
Apr 30 #Python
You might like
Sony CFR 320 修复改造
2020/03/14 无线电
PHP伪造referer实例代码
2008/09/20 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
php+ajax实现异步上传文件或图片功能
2017/07/18 PHP
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
2013/05/17 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
js判断手机号运营商的方法
2015/10/23 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
bootstrap table分页模板和获取表中的ID方法
2017/01/10 Javascript
vue cli 全面解析
2018/02/28 Javascript
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
2019/02/27 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
[01:02:18]VGJ.S vs infamous Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
python中执行shell命令的几个方法小结
2014/09/18 Python
python访问类中docstring注释的实现方法
2015/05/04 Python
python读取文件名称生成list的方法
2018/04/27 Python
Python接口测试get请求过程详解
2020/02/28 Python
MAC平台基于Python Appium环境搭建过程图解
2020/08/13 Python
举例详解HTML5中使用JSON格式提交表单
2015/06/16 HTML / CSS
维也纳通行证:Vienna PASS
2019/07/18 全球购物
运动会广播稿60字
2014/01/15 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
电影雷锋观后感
2015/06/10 职场文书
婚育证明格式
2015/06/17 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书
助学金申请书该怎么写?
2019/07/16 职场文书
高中班主任工作总结(范文)
2019/08/20 职场文书
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle