用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常见文件操作的函数示例代码
Nov 15 Python
Python随机生成彩票号码的方法
Mar 05 Python
python执行等待程序直到第二天零点的方法
Apr 23 Python
python轻松查到删除自己的微信好友
Jan 10 Python
python MNIST手写识别数据调用API的方法
Aug 08 Python
JSON文件及Python对JSON文件的读写操作
Oct 07 Python
python mysql 字段与关键字冲突的解决方式
Mar 02 Python
Python如何读写CSV文件
Aug 13 Python
如何使用python写截屏小工具
Sep 29 Python
python爬虫请求头的使用
Dec 01 Python
Python中使用ipython的详细教程
Jun 22 Python
Python中rapidjson参数校验实现
Jul 25 Python
python本地文件服务器实例教程
python字符串常规操作大全
python自动化之如何利用allure生成测试报告
python使用openpyxl库读写Excel表格的方法(增删改查操作)
Python time库的时间时钟处理
Django项目如何获得SSL证书与配置HTTPS
Python基础之常用库常用方法整理
Apr 30 #Python
You might like
swfupload 多文件上传实现代码
2008/08/27 PHP
yii中widget的用法
2014/12/03 PHP
php获取当前页面完整URL地址
2015/12/30 PHP
PHP使用递归算法无限遍历数组示例
2017/01/13 PHP
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
JavaScript 原型链学习总结
2010/10/29 Javascript
Jquery之美中不足小结
2011/02/16 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
js实现的简洁网页滑动tab菜单效果代码
2015/08/24 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
jquery动态遍历Json对象的属性和值的方法
2016/07/27 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
2017/06/04 Javascript
通过示例彻底搞懂js闭包
2017/08/10 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
python人人网登录应用实例
2014/09/26 Python
Django自定义manage命令实例代码
2018/02/11 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
Django重置migrations文件的方法步骤
2019/05/01 Python
python3模拟实现xshell远程执行liunx命令的方法
2019/07/12 Python
妙用itchat! python实现久坐提醒功能
2019/11/25 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
CSS3 边框效果
2019/11/04 HTML / CSS
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
介绍下static、final、abstract区别
2015/01/30 面试题
大学生考试作弊被抓检讨书
2014/12/27 职场文书
个人合作协议范本
2015/08/06 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书
Python基本知识点总结
2022/04/07 Python
Python爬虫网络请求之代理服务器和动态Cookies
2022/04/12 Python