用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的Django框架来制作一个RSS阅读器
Jul 22 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
python3中dict(字典)的使用方法示例
Mar 22 Python
Python实现的矩阵类实例
Aug 22 Python
linux环境下的python安装过程图解(含setuptools)
Nov 22 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
Dec 10 Python
Python使用requests提交HTTP表单的方法
Dec 26 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
Jul 22 Python
Python使用Pandas库常见操作详解
Jan 16 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
Mar 06 Python
Python闭包装饰器使用方法汇总
Jun 29 Python
python实现一个简单的贪吃蛇游戏附代码
Jun 28 Python
python本地文件服务器实例教程
python字符串常规操作大全
python自动化之如何利用allure生成测试报告
python使用openpyxl库读写Excel表格的方法(增删改查操作)
Python time库的时间时钟处理
Django项目如何获得SSL证书与配置HTTPS
Python基础之常用库常用方法整理
Apr 30 #Python
You might like
php下使用iconv需要注意的问题
2010/11/20 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
javascript中的return和闭包函数浅析
2014/06/06 Javascript
javascript格式化指定日期对象的方法
2015/04/21 Javascript
详解Bootstrap glyphicons字体图标
2016/01/04 Javascript
详解javascript实现瀑布流列式布局
2016/01/29 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
React Native日期时间选择组件的示例代码
2018/04/27 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
JS数组实现分类统计实例代码
2018/09/30 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
jQuery编写QQ简易聊天框
2020/08/27 jQuery
python将人民币转换大写的脚本代码
2013/02/10 Python
python网络编程学习笔记(四):域名系统
2014/06/09 Python
Python3 伪装浏览器的方法示例
2017/11/23 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
Python判断一个三位数是否为水仙花数的示例
2018/11/13 Python
对python:print打印时加u的含义详解
2018/12/15 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
经典优秀个人求职自荐信格式
2013/09/25 职场文书
学校食堂食品安全责任书
2014/07/28 职场文书
2014领导干部学习焦裕禄同志先进事迹思想汇报
2014/09/19 职场文书
党员个人对照检查材料范文
2014/09/24 职场文书
5.12护士节活动总结
2015/02/10 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
关于MySQL中的 like操作符详情
2021/11/17 MySQL
游戏《铁拳》动画化!2022年年内播出
2022/03/21 日漫