用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实现遍历windows所有窗口并输出窗口标题的方法
Mar 13 Python
Python中的filter()函数的用法
Apr 27 Python
python下paramiko模块实现ssh连接登录Linux服务器
Jun 03 Python
深入理解Python3 内置函数大全
Nov 23 Python
利用python库在局域网内传输文件的方法
Jun 04 Python
使用Python实现一个栈判断括号是否平衡
Aug 23 Python
Python爬虫之UserAgent的使用实例
Feb 21 Python
python递归下载文件夹下所有文件
Aug 31 Python
使用Python将Exception异常错误堆栈信息写入日志文件
Apr 08 Python
opencv 实现特定颜色线条提取与定位操作
Jun 02 Python
Python进行统计建模
Aug 10 Python
python 自定义异常和主动抛出异常(raise)的操作
Dec 11 Python
python本地文件服务器实例教程
python字符串常规操作大全
python自动化之如何利用allure生成测试报告
python使用openpyxl库读写Excel表格的方法(增删改查操作)
Python time库的时间时钟处理
Django项目如何获得SSL证书与配置HTTPS
Python基础之常用库常用方法整理
Apr 30 #Python
You might like
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
PHP中PDO事务处理操作示例
2018/05/02 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
javascript getElementsByName()的用法说明
2009/07/31 Javascript
使用JavaScript构建JSON格式字符串实现步骤
2013/03/22 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
js中不同的height, top的区别对比
2015/09/24 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
2015/09/27 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
vue-router项目实战总结篇
2018/02/11 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
Vue-cli3多页面配置详解
2020/03/22 Javascript
js实现简单五子棋游戏
2020/05/28 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
[42:39]老党炸弹人试玩视频
2014/09/03 DOTA
win7安装python生成随机数代码分享
2013/12/27 Python
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
Python常用正则表达式符号浅析
2014/08/13 Python
Python3读取zip文件信息的方法
2015/05/22 Python
python面向对象 反射原理解析
2019/08/12 Python
Python 函数list&read&seek详解
2019/08/28 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
信用社实习人员自我鉴定
2013/09/20 职场文书
大学生志愿者感言
2014/01/15 职场文书
商场主管竞聘书
2014/03/31 职场文书
英文演讲稿
2014/05/15 职场文书
旅游节目策划方案
2014/05/26 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
一个独生女的故事观后感
2015/06/04 职场文书
MySQL快速插入一亿测试数据
2021/06/23 MySQL