用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中使用Neo4j数据库的教程
Apr 16 Python
java中两个byte数组实现合并的示例
May 09 Python
使用Python微信库itchat获得好友和群组已撤回的消息
Jun 24 Python
浅谈Python中range与Numpy中arange的比较
Mar 11 Python
深入浅析Python 命令行模块 Click
Mar 11 Python
python实现与redis交互操作详解
Apr 21 Python
全网首秀之Pycharm十大实用技巧(推荐)
Apr 27 Python
keras绘制acc和loss曲线图实例
Jun 15 Python
python求解汉诺塔游戏
Jul 09 Python
Python实现Appium端口检测与释放的实现
Dec 31 Python
如何理解python接口自动化之logging日志模块
Jun 15 Python
Python绘制散点图之可视化神器pyecharts
Jul 07 Python
python本地文件服务器实例教程
python字符串常规操作大全
python自动化之如何利用allure生成测试报告
python使用openpyxl库读写Excel表格的方法(增删改查操作)
Python time库的时间时钟处理
Django项目如何获得SSL证书与配置HTTPS
Python基础之常用库常用方法整理
Apr 30 #Python
You might like
《OVERLORD》手游英文版即将上线 手机上也能扮演骨王
2020/04/09 日漫
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
JS随即打乱数组实现代码
2012/12/03 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
vue 系列——vue2-webpack2框架搭建踩坑之路
2017/12/22 Javascript
分享vue里swiper的一些坑
2018/08/30 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
javascript中this的用法实践分析
2019/07/29 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
2020/02/06 Javascript
可拖拽组件slider.js使用方法详解
2020/12/04 Javascript
[48:53]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第一场
2014/05/26 DOTA
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
django富文本编辑器的实现示例
2019/04/10 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
2019/06/27 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
python 实现rolling和apply函数的向下取值操作
2020/06/08 Python
详解如何通过H5(浏览器/WebView/其他)唤起本地app
2017/12/11 HTML / CSS
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
机械设计及其自动化求职推荐信
2014/02/17 职场文书
优秀会计求职信
2014/07/04 职场文书
艺术学院毕业生自荐信
2014/07/05 职场文书
给老婆道歉的话
2015/01/20 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android
Python字符串的转义字符
2022/04/07 Python