用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使用win32com库播放mp3文件的方法
May 30 Python
在Python的Django框架中编写错误提示页面
Jul 22 Python
Python 常用的安装Module方式汇总
May 06 Python
python线程池(threadpool)模块使用笔记详解
Nov 17 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
Mar 05 Python
python实现决策树ID3算法的示例代码
May 30 Python
浅谈python requests 的put, post 请求参数的问题
Jan 02 Python
使用Python正则表达式操作文本数据的方法
May 14 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
Jun 17 Python
Python实现对adb命令封装
Mar 06 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
Mar 09 Python
django 认证类配置实现
Nov 11 Python
python本地文件服务器实例教程
python字符串常规操作大全
python自动化之如何利用allure生成测试报告
python使用openpyxl库读写Excel表格的方法(增删改查操作)
Python time库的时间时钟处理
Django项目如何获得SSL证书与配置HTTPS
Python基础之常用库常用方法整理
Apr 30 #Python
You might like
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
ThinkPHP空模块和空操作详解
2014/06/30 PHP
php中文字符串截取方法实例总结
2014/09/30 PHP
twig模板常用语句实例小结
2016/02/04 PHP
PHP中Trait及其应用详解
2017/02/14 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
jQuery UI库中dialog对话框功能使用全解析
2016/04/23 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
详细分析单线程JS执行问题
2017/11/22 Javascript
Vuepress 搭建带评论功能的静态博客的实现
2019/02/17 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
用python写一个windows下的定时关机脚本(推荐)
2017/03/21 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
python批量获取html内body内容的实例
2019/01/02 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
python中比较两个列表的实例方法
2019/07/04 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
有原因的手表:Flex Watches
2019/03/23 全球购物
单位办理社保介绍信
2014/01/10 职场文书
喝酒检查书范文
2014/02/23 职场文书
《二泉映月》教学反思
2014/04/15 职场文书
公司应聘求职信
2014/06/21 职场文书
2014个人四风对照检查材料思想汇报
2014/09/18 职场文书
办公室岗位职责范本
2015/04/11 职场文书
2016教师校本培训心得体会
2016/01/08 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
浅谈Python numpy创建空数组的问题
2021/05/25 Python
Redis全局ID生成器的实现
2022/06/05 Redis