用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编程-将Python程序转化为可执行程序[整理]
Apr 09 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
Dec 15 Python
Python访问MongoDB,并且转换成Dataframe的方法
Oct 15 Python
详解PyCharm安装MicroPython插件的教程
Jun 24 Python
对DJango视图(views)和模版(templates)的使用详解
Jul 17 Python
python3 pillow模块实现简单验证码
Oct 31 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 Python
Python2.6版本pip安装步骤解析
Aug 17 Python
python实现人性化显示金额数字实例详解
Sep 25 Python
Python中的面向接口编程示例详解
Jan 17 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
Mar 03 Python
Python pandas读取CSV文件的注意事项(适合新手)
Jun 20 Python
python本地文件服务器实例教程
python字符串常规操作大全
python自动化之如何利用allure生成测试报告
python使用openpyxl库读写Excel表格的方法(增删改查操作)
Python time库的时间时钟处理
Django项目如何获得SSL证书与配置HTTPS
Python基础之常用库常用方法整理
Apr 30 #Python
You might like
使用php重新实现PHP脚本引擎内置函数
2007/03/06 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
使用PHP uniqid函数生成唯一ID
2015/11/18 PHP
php简单复制文件的方法
2016/05/09 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
类之Prototype.js学习
2007/06/13 Javascript
JSQL  一个 web DB 的封装
2010/05/05 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
jQuery UI制作选项卡(tabs)
2016/12/13 Javascript
微信小程序 devtool隐藏的秘密
2017/01/21 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
JS自定义右键菜单实现代码解析
2020/07/16 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
2021/02/07 Javascript
Eclipse + Python 的安装与配置流程
2013/03/05 Python
python使用PyGame模块播放声音的方法
2015/05/20 Python
python友情链接检查方法
2015/07/08 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
使用Python求解带约束的最优化问题详解
2020/02/11 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
微软新西兰官方网站:Microsoft New Zealand
2018/08/17 全球购物
澳大利亚家庭花园和DIY工具网店:VidaXL
2019/05/03 全球购物
《小小雨点》教学反思
2014/02/18 职场文书
21岁生日感言
2014/02/27 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
小学校园之星事迹材料
2014/05/16 职场文书
家长反馈意见及建议
2015/06/03 职场文书