用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 相关文章推荐
浅谈django model的get和filter方法的区别(必看篇)
May 23 Python
python实现自动发送邮件
Jun 20 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
Dec 10 Python
对python读写文件去重、RE、set的使用详解
Dec 11 Python
django获取from表单multiple-select的value和id的方法
Jul 19 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
Aug 29 Python
图解python全局变量与局部变量相关知识
Nov 02 Python
tensorflow2.0的函数签名与图结构(推荐)
Apr 28 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
May 26 Python
Keras之fit_generator与train_on_batch用法
Jun 17 Python
python 通过 pybind11 使用Eigen加速代码的步骤
Dec 07 Python
Python实现Appium端口检测与释放的实现
Dec 31 Python
python本地文件服务器实例教程
python字符串常规操作大全
python自动化之如何利用allure生成测试报告
python使用openpyxl库读写Excel表格的方法(增删改查操作)
Python time库的时间时钟处理
Django项目如何获得SSL证书与配置HTTPS
Python基础之常用库常用方法整理
Apr 30 #Python
You might like
PHP 缓存实现代码及详细注释
2010/05/16 PHP
php preg_replace替换实例讲解
2013/11/04 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
PHP读MYSQL中文乱码的快速解决方法
2016/10/01 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
JavaScript中清空数组的三种方法分享
2011/04/07 Javascript
利用JavaScript检测CPU使用率自己写的
2014/03/22 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
JavaScript中省略元素对数组长度的影响
2016/10/26 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
2018/04/25 Javascript
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
Vue+Vuex实现自动登录的知识点详解
2020/03/04 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
python使用点操作符访问字典(dict)数据的方法
2015/03/16 Python
spyder常用快捷键(分享)
2017/07/19 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
Python根据已知邻接矩阵绘制无向图操作示例
2018/06/23 Python
python pygame实现2048游戏
2018/11/20 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
python实现微信每日一句自动发送给喜欢的人
2019/04/29 Python
Pandas分组与排序的实现
2019/07/23 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
日本热销NO.1胶原蛋白冻:Aishitoto爱希特多
2019/06/20 全球购物
公司端午节活动方案
2014/02/04 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
六一儿童节活动总结
2014/08/27 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
小学教研工作总结2015
2015/05/13 职场文书
详解python网络进程
2021/06/15 Python
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript