做爬虫总会遇到各种各样的反爬限制,反爬的第一道防线往往在登录就出现了,为了限制爬虫自动登录,各家使出了浑身解数,所谓道高一尺魔高一丈。

今天分享个如何简单处理滑动图片的验证码的案例。

类似这种拖动滑块移动到图片中缺口位置与之重合的登录验证在很多网站或者APP都比较常见,因为它对真实用户体验友好,容易识别。同时也能拦截掉大部分初级爬虫。

作为一只python爬虫,如何正确地自动完成这个验证过程呢?

先来分析下,核心问题其实是要怎么样找到目标缺口的位置,一旦知道了位置,我们就可以借用selenium等工具完成拖动的操作。

我们可以借用opencv来解决这个问题,主要步骤:

opencv 是什么?

OpenCV(Open Source Computer Vision Library)是开放源代码计算机视觉库,主要算法涉及图像处理、计算机视觉和机器学习相关方法,可用于开发实时的图像处理、计算机视觉以及模式识别程序。

直接安装

pip install opencv-python

首先将图片进行高斯模糊处理,高斯模糊的主要作用是减少图像的噪声,用于预处理阶段。

import cv2 as cv
image = cv.imread(image_path)
blurred = cv.GaussianBlur(image, (5, 5), 0)
cv.imshow("blurred", blurred)

处理后的效果

接着用Canny边缘检测到得到一个包含“窄边界”的二值图像。所谓二值图像就是黑白图,只有黑色和白色。

canny = cv.Canny(blurred, 200, 400)
cv.imshow("canny", canny)

轮廓检测

contours, hierarchy = cv.findContours(canny, cv.RETR_CCOMP, cv.CHAIN_APPROX_SIMPLE)
for i, contour in enumerate(contours):  # 所有轮廓x, y, w, h = cv.boundingRect(contour)  # 外接矩形cv.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)
cv.imshow('image', image)

找出所有的轮廓,并用红色线框将其绘制标识出来了,看出来大大小小有几十个轮廓

剩下的问题就好办了,我们只需要对轮廓的面积或者周长范围做限制,就能过滤出目标轮廓的位置, 前提是我们对目标位置的轮廓大小是预先确定的。

for i, contour in enumerate(contours):  # 所有轮廓if 6000 < cv.contourArea(contour) <= 8000 and 300 < cv.arcLength(contour, True) < 500:x, y, w, h = cv.boundingRect(contour)  # 外接矩形print(x, y, w, h)cv.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)cv.imshow('image', image)# 找目标缺口,第一个可能是滑块if x <= 200:continuereturn x + int(w / 2), 675

轮廓的面积大概是6000到8000之间,周长在300到500之间, 最后用外接矩形获取该轮廓图的坐标位置和宽高大小。

如上就找到了目标位置,剩下的工作就是将滑块移动到指定位置即可

作为一只Python爬虫:如何破解滑动验证码相关推荐

  1. 用Python爬虫破解滑动验证码

    我们可以借用opencv来解决这个问题,主要步骤: opencv 是什么? OpenCV(Open Source Computer Vision Library)是开放源代码计算机视觉库,主要算法涉及 ...

  2. Python爬虫的实际运用之:破解滑动验证码

    做爬虫总会遇到各种各样的反爬限制,反爬的第一道防线往往在登录就出现了,为了限制爬虫自动登录,各家使出了浑身解数,所谓道高一尺魔高一丈. 今天分享个如何简单处理滑动图片的验证码的案例. 类似这种拖动滑块 ...

  3. Python破解滑动验证码(极验/无背景图)

    在使用Python突破人机验证时,验证码乃第一大关卡.本文针对破解滑动验证码展开分析.对于能够直接获取滑块小图与背景图的滑动验证码,通过使用cv2模块的matchTemplate函数,可以准确地计算出 ...

  4. 如何破解滑动验证码?

    本文通过自动化查询域名或公司的备案信息,来演示其中图片滑动验证码的破解方式,以此来思考验证码的安全性问题,思考如何设计出安全性更高的验证码. 注意:破解验证码进行网络内容抓取可能是一种违规行为,可以以 ...

  5. 破解滑动验证码,成功率在百分之九十九

    破解滑动验证码 使用python破解滑动验证码后获取cookie, 用于爬取数据,这里是获取到cookie存到redis,不费话了,上代码 import re import redis from se ...

  6. Python爬虫百度云加速验证码问题

    Python爬虫百度云加速验证码问题 问题描述 解决思路 实现代码 最终结果 问题描述 第一篇博文:低手,刚学,求勿喷. 前段时间,使用爬虫访问一个磁力链接下载网站(target_url),收集电影下 ...

  7. python+selenium+chrome 做滑动验证码 会被浏览器检测到使用的自动软件导致滑动验证失败

    python+selenium+chrome 做滑动验证码 会被浏览器检测到使用的自动软件导致滑动验证失败 解决方法:代码中添加: import time from selenium import w ...

  8. selenium爬虫|破解滑动验证码以极验为例

    爬虫访问一些网站遇到滑动验证码解决方案 这里是用selenium做模拟,如果是requests可以封装这个登录方法来获取登录后的cookies也是可以用的. 1 思路 先讲思路,分析流程 我们输入账号 ...

  9. Python爬虫-JS破解openlaw加密cookie

    简单介绍: 最近做研究js混淆加密,以openlaw作为网站进行学习研究.openlaw主页裁判文书栏中有大量案件信息,同时能够为客户提供标准的法律专业知识以及智慧和经验成果.过程中遇到一些反爬措施, ...

最新文章

  1. Java中的String,StringBuilder,StringBuffer三者的区别
  2. CentOS 7.2修改网卡名称
  3. Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)
  4. JS字符串与二进制的相互转化
  5. What to call your Academic Event
  6. 智慧交通day03-车道线检测实现09:车道线检测代码汇总(Python3.8)
  7. 用Java描述数据结构之线性表的链式存储(链表),模拟LinkedList实现
  8. java 指针 引用_java中的引用与c中的指针
  9. web前端都是自学成才吗?入行前端工程师的3种方式
  10. 【note】《软件体系结构》知识整理(1-5章)
  11. 安装ffmpeg及nginx模块
  12. Python 颜色代码大全
  13. 软考初级程序员真题资料(2009年上半年——2019年上半年)
  14. 帐号 快速看图cad_CAD快速看图
  15. Discuz论坛项目架构分析
  16. 页面404圈小猫游戏代码
  17. swiper、vue-awsome-swiper插件使用
  18. python中获取网页元素
  19. 集成墙面拆后恐怖极了,没想到这么美!
  20. 【element-plus】el-dialog距离顶部的高度

热门文章

  1. pandas使用isna函数和any函数计算返回dataframe中包含缺失值的数据行(rows with missing values in dataframe)
  2. R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色、添加抖动数据点jitter、误差条)并在X轴标签下方添加分组对应的统计值(样本数N、中位数、四分位数的间距iqr)
  3. R语言gganimate包创建可视化gif动图、可视化动图:创建动态散点图动画基于transition_time函数、使用shadow_wake函数配置动画的渐变效果(gradual falloff)
  4. R语言ggplot2可视化:将条形图(bar plot)和线图(line plot)组合在一起并使用双Y轴(double y axis)进行可视化、其中一个Y轴显示为百分比
  5. R语言sample.int有放回或者无放回采样随机整数实战
  6. R语言seq函数生成数据序列实战
  7. 什么是外函数,什么是内函数?闭包(Closure)是什么?说说你对闭包(Closure)的理解?
  8. R语言绘图设备dev
  9. 一张图追踪测序的大历史背景
  10. JDK 环境变量设置参考