Python 破解 滑动验证码 案例
2021/5/7 12:25:14
本文主要是介绍Python 破解 滑动验证码 案例,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
我们可以借用opencv来解决这个问题,主要步骤:
- 读取图片
- 高斯模糊处理
- Canny边缘检测
- 轮廓检测
- 获取位置
opencv 是什么?
OpenCV(Open Source Computer Vision Library)是开放源代码计算机视觉库,主要算法涉及图像处理、计算机视觉和机器学习相关方法,可用于开发实时的图像处理、计算机视觉以及模式识别程序。
安装
pip install opencv-python
代码
import cv2 as cv image_path = 'captcha01.jpg' image = cv.imread(image_path) cv.imshow("image", image) # 高斯模糊 blurred = cv.GaussianBlur(image, (5, 5), 0) cv.imshow("blurred", blurred) # 边缘检测 canny = cv.Canny(blurred, 200, 400) cv.imshow("canny", canny) # 轮廓识别 def contour_discern_all(): contours, hierarchy = cv.findContours(canny, cv.RETR_CCOMP, cv.CHAIN_APPROX_SIMPLE) for contour in contours: # 所有轮廓 x, y, w, h = cv.boundingRect(contour) cv.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2) cv.imshow('contour_all', image) # 添加限制 def contour_discern(): contours, hierarchy = cv.findContours(canny, cv.RETR_CCOMP, cv.CHAIN_APPROX_SIMPLE) for contour in contours: # 所有轮廓 print('轮廓面积:', cv.contourArea(contour), '轮廓周长:', cv.arcLength(contour, True)) # 对周长和面积添加限制(以下数值仅作用于当前案例) if 35 > cv.contourArea(contour) > 20 and 470 > cv.arcLength(contour, True) > 460: 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('contour', image) contour_discern() contour_discern_all() cv.waitKey() cv.destroyAllWindows()
效果图
如上就找到了目标位置,剩下的工作可以使用selenium或其他工具,将滑块移动到指定位置即可。
参考文献
这篇关于Python 破解 滑动验证码 案例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程