用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中import导入上一级目录模块及循环import问题的解决
Jun 04 Python
Python实现定时任务
Feb 08 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
Tensorflow 同时载入多个模型的实例讲解
Jul 27 Python
python绘制地震散点图
Jun 18 Python
Python concurrent.futures模块使用实例
Dec 24 Python
flask框架自定义url转换器操作详解
Jan 25 Python
3种适用于Python的疯狂秘密武器及原因解析
Apr 29 Python
python3.7调试的实例方法
Jul 21 Python
Python headers请求头如何实现快速添加
Nov 03 Python
详细介绍python操作RabbitMq
Apr 12 Python
numpy array找出符合条件的数并赋值的示例代码
Jun 01 Python
python本地文件服务器实例教程
python字符串常规操作大全
python自动化之如何利用allure生成测试报告
python使用openpyxl库读写Excel表格的方法(增删改查操作)
Python time库的时间时钟处理
Django项目如何获得SSL证书与配置HTTPS
Python基础之常用库常用方法整理
Apr 30 #Python
You might like
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
jQuery 性能优化指南(2)
2009/05/21 Javascript
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
js编写trim()函数及正则表达式的运用
2013/10/24 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
input框中的name和id的区别
2016/11/16 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
2017/06/20 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
vue加载自定义的js文件方法
2018/03/13 Javascript
详解ES6中的Map与Set集合
2019/03/22 Javascript
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
python两种遍历字典(dict)的方法比较
2014/05/29 Python
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
将Python中的数据存储到系统本地的简单方法
2015/04/11 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
python中reader的next用法
2018/07/24 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
详解python算法常用技巧与内置库
2020/10/17 Python
学校卫生检查制度
2014/02/03 职场文书
房屋买卖委托公证书
2014/04/08 职场文书
简单租房协议书
2014/04/09 职场文书
党支部三会一课计划
2014/09/24 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
《鲁班学艺》读后感3篇
2019/11/27 职场文书
手残删除python之后的补救方法
2021/06/26 Python