Python简单的验证码识别: 图片验证, 滑动验证, 点选验证...

news2024/11/24 17:53:53

目录

      • 前言
      • 环境使用:
      • 模块使用:
      • 代码展示
        • 图片验证码
        • 滑动验证码:
        • 点选验证:
      • 尾语 💝

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

环境使用:

  • Python 3.8 解释器

  • Pycharm 编辑器

模块使用:

  • selenium --> pip install selenium==3.141.0

  • ddddocr --> pip install ddddocr

代码展示

导入模块

# from selenium import webdriver
# from selenium.webdriver import ActionChains
# from password import account_train, password_train
# # 导入时间模块
# import time
  1. 打开浏览器
# driver = webdriver.Chrome()
# # 绕过检测
# driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",
#                        {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})
  1. 访问网站
# driver.get('https://kyfw.12306.cn/otn/resources/login.html')
  1. 登陆账号密码, 点击登陆

    • 先定位输入框<元素定位>, 然后再输入内容

      I. css选择器

      II. xpath节点提取

网站检测到了, 你在使用selenium --> 绕过检测

# # 通过 CSS 选择器查找元素
# driver.find_element_by_css_selector('#J-userName').send_keys('账号')
# driver.find_element_by_css_selector('#J-password').send_keys('密码')
# driver.find_element_by_css_selector('#J-login').click()
  1. <出现验证码> --> 滑动操作就可以了

    I. 按住滑块 --> 鼠标动作链

    II. 滑动滑块 --> 滑到哪里呢?

网页元素还没加载出来, 你就去定位元素, 找不到…

延时

# time.sleep(1)

定位滑块元素

# h = driver.find_element_by_css_selector('#nc_1_n1z')
# action = ActionChains(driver)
# # perform() 执行操作
# action.click_and_hold(h).perform()
# action.move_by_offset(85, 0)
# action.move_by_offset(85, 0)
# action.move_by_offset(85, 0)
# action.move_by_offset(85, 0)
# # 释放
# action.release().perform()

图片验证码

  • img\img.png 相对路径

  • D:\自游\验证码识别\img\img.png 绝对路径

  • mode=‘rb’ 以二进制方法读取数据内容

ddddocr 缺点: 识别准确率不是很高

导入识别模块

import ddddocr

实例化对象

ocr = ddddocr.DdddOcr()

读取图片内容

f = open('img\\img_1.png', mode='rb')
img = f.read()
result = ocr.classification(img)
print(result)

滑动验证码:

12306网站滑动验证码

selenium 模块自动化测试模块

selenium --> 浏览器驱动 --> 浏览器 <模拟人的行为去操作流程>

selenium 默认安装是4.0版本 语法和3.0不同 pip install selenium==3.141.0

  1. 谷歌浏览器

  2. 谷歌驱动 --> 版本选择 和你浏览器版本最相近就可以了

    下载好了之后解压就可以了, 不需要双击安装

  3. 打开浏览器

    • 驱动路径:

      I. 驱动文件在python安装目录下 <不需要添加路径>

      II. 驱动文件和代码放在一起 <不需要添加路径>

      III. 写驱动路径 绝对路径

  4. 访问网站

  5. 登陆账号密码, 点击登陆

  6. <出现验证码> --> 滑动操作就可以了

点选验证:

模拟登陆

from selenium import webdriver
from selenium.webdriver import ActionChains
import time
from password import VideoAccount, VideoPassword, account, password
from chaojiying import Chaojiying_Client
driver = webdriver.Chrome()
driver.get('https://*****/')
driver.find_element_by_css_selector('.header-login-entry').click()
time.sleep(1)
driver.find_element_by_css_selector('.tab__form div:nth-child(1) input').send_keys(VideoAccount)
driver.find_element_by_css_selector('.tab__form div:nth-child(3) input').send_keys(VideoPassword)
driver.find_element_by_css_selector('div.btn_primary').click()
"""
对接打码平台 --> 超级鹰
"""
time.sleep(2)
img = driver.find_element_by_css_selector('.geetest_item.geetest_big_item')
img.screenshot('yzm.png')
im = open('yzm.png', 'rb').read()
chaojiying = Chaojiying_Client(account, password, '96001')
pic_str = chaojiying.PostPic(im, 9004)['pic_str']
for index in pic_str.split('|'):
    x = index.split(',')[0]
    y = index.split(',')[1]
    action = ActionChains(driver)
    action.move_to_element_with_offset(img, int(x), int(y)).click().perform()

driver.find_element_by_css_selector('.geetest_commit_tip').click()

尾语 💝

要成功,先发疯,下定决心往前冲!

学习是需要长期坚持的,一步一个脚印地走向未来!

未来的你一定会感谢今天学习的你。

—— 心灵鸡汤

本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇</center

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/559816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springcloud-alibaba (03)sentinel实现规则持久化-流控规则为例

Sentinel和Nacos的整合可以实现规则动态配置&#xff0c;即在Nacos中修改规则后&#xff0c;Sentinel能够实时地读取并应用新的规则。而规则持久化则是指将规则保存在Nacos中&#xff0c;以避免意外故障或重启时规则被丢失。 实现规则持久化&#xff0c;可以按照以下步骤进行操…

龙蜥白皮书精选:利用 io_uring 提升数据库系统性能

文/高性能存储 SIG 01 背景介绍 传统的 IO 软件栈已经无法完全释放出高性能存储设备的性能&#xff0c;高性能 IO 栈是当前存储领域重点研究的课题之一&#xff0c;代表性的如用户态方案 SPDK&#xff0c;以及标准的内核态方案 io_uring。 02 关键技术 Linux 社区从零开始设…

Raft算法

这是一种选举算法&#xff0c;用来确认分布式架构下主节点(领导者)是哪一个结点 只有成为了主节点才能向其他结点进行指令的下达来进行数据的同步 三种角色&#xff1a;追随者Follower&#xff0c;候选人Candidate&#xff0c;领导者leader (1)追随者Follower&#xff1a;接收…

电脑版pdf阅读器有哪些?编辑途径分析

PDF 阅读器电脑版是一种十分流行的电子文档阅读工具&#xff0c;它可以让用户在电脑上轻松地阅读各种文档&#xff0c;包括 PDF 文件。在数字化信息时代&#xff0c;PDF 阅读器电脑版已经成为了许多人电脑上必备的工具之一。本文将探讨 PDF 阅读器电脑版的优缺点&#xff0c;以…

【面试题】面试官:谈谈你知道的DOM常见的操作

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 前言 面试官&#xff1a;“谈谈你知道的DOM常见的操作” 紧张的萌新&#xff1a;“可以获…

达梦数据库索引的建立使用

达梦数据库支持聚集索引&#xff0c;复合索引&#xff0c;函数索引&#xff0c;唯一索引&#xff0c;位图索引等等。 一.建立索引的准则 1.1在表中插入数据后创建索引 一般情况下&#xff0c;在插入或装载了数据后&#xff0c;为表创建索引会更加有效率。如果在装载数据之前…

基于最新SolVES 模型与多技术融合【QGIS、PostgreSQL、ARCGIS、MAXENT、R】实现生态系统服务功能社会价值评估及拓展案例分析

目录 第一章 理论基础与研究热点 第二章 SolVES 4.0 模型运行环境配置 第三章 SolVES 4.0 模型运行 第四章 数据获取与入库 第五章 环境变量与社会价值的相关分析 第六章 拓展案例分析 SolVES模型&#xff08;Social Values for Ecosystem Services&#xff09;全称为生态…

功能开发如何实现多终端设备上的体验统一?

多端能力服务统一&#xff08;Multi-Experience Service Orchestration&#xff0c;MESO&#xff09;是一种技术和服务架构的概念&#xff0c;旨在为多种终端设备提供统一的用户体验和功能。它解决了在不同终端设备上使用不同应用程序和服务时出现的问题&#xff0c;使得用户可…

【云原生-深入理解 Kubernetes 系列 3】深入理解容器进程的文件系统

文章目录 系列文章目录&#x1f479; 关于作者一、回顾二、容器进程的文件系统是什么样子的&#xff1f;rootfs一致性解决应用依赖关系解决复用性 三、OverlayFS 联合文件系统先决条件overlay2 驱动程序如何工作结构图探索含义-磁盘上的镜像层和容器层镜像层容器层 四、overlay…

Lua学习笔记:浅谈对闭包的认识

前言 本篇在讲什么 我们从几个方面简单认识和理解lua的闭包 本篇适合什么 适合初学Lua的小白 本篇需要什么 对Lua语法有简单认知 依赖Lua5.1的环境 依赖Sublime Text3编辑器 本篇的特色 具有全流程的图文教学 重实践&#xff0c;轻理论&#xff0c;快速上手 提供全…

docker 安装常用软件

安装docker 下载docker curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun修改镜像仓库 vim /etc/docker/daemon.json{"registry-mirrors": ["https://dockerhub.azk8s.cn","https://hub-mirror.c.163.com"] }查看docker …

Adapt Learning使用教程(Adapt Framework/Adapt Authoring)(一)

因为这是一个外国的技术&#xff0c;在国内又很小众&#xff0c;再加上公司业务需要用到这个东西所以就来总结一下。刚接到任务的时候也是稀里糊涂的&#xff0c;官网全是英文&#xff0c;国内也搜不到教程&#xff0c;让使用这个变得难上加难&#xff0c;没有其他教程参考我只…

InetAddress类

1. 简介 java.net.InetAddress类是Java对Ip地址的高层表示。大多数其他网络都要用到这个类&#xff0c;包括Socket、ServerSocket、URL、DatagramSocket、DatagramPacket等。一般来讲&#xff0c;它包括一个主机名和一个IP地址。它提供了获取和操作 IP 地址的方法&#xff0c;…

OceanBase 4.1解读:我们支持MySQL 8.0哪些新增功能特性?

本文主要介绍 OceanBase 在 4.1 版本发布之际&#xff0c;对 MySQL 8.0 新增功能特性的支持情况。文章作者刘彬&#xff0c;OceanBase高级技术专家。曾参与 OceanBase RS、存储模块研发&#xff0c;目前是 SQL 执行组负责人。 MySQL 在业内是最受欢迎的关系数据库之一&#xff…

UOS下使用HHDESK文本对比功能

UOS系统从开发至今&#xff0c;虽然进展很大&#xff0c;但受限于一些因素&#xff0c;所支持的功能和软件&#xff0c;目前仍不多。 HHDESK便是其中佼佼者之一。 此篇介绍的便是HHDESK的一项便捷功能——文本对比。这个功能针对办公人员所开发&#xff0c;使得原本复杂的UOS…

SpringCloud-Gateway的详细讲解以及完整的示意图和代码演示

目录 SpringCloud Gateway 看一个需求&#xff0c;引出网关服务 Gateway 网络拓扑图-背下来 Gateway 是什么 Gateway 核心功能 Gateway VS Zuul Gateway 和Zuul 区别 Gateway 基本原理​编辑 解读: Route(路由) Predicate(断言) Filter(过滤) How It Works 工作机制…

Linux网络——shell编程之firewalld防火墙

Linux网络——shell编程之firewalld防火墙 一、firewalld概述二、iptables与firewalld的联系与区别1.iptables与firewalld的区别2.iptables与firewalld的联系 三、firewalld区域1.firewalld的九个区域2.firewalld区域介绍3.firewalld数据处理流程4.firewalld检查数据包源地址的…

【shell编程学习】反弹shell

反弹实验 机器IPwin10虚拟机192.168.242.129攻击机centos 虚拟机192.168.242.131靶机 1&#xff0c;win10机器安装Ncat 来监听端口 简单来说&#xff0c;就是下载netcat 安装包&#xff0c;解压&#xff0c;将nc.exe 复制到C:\Windows\System32的文件夹下。即可使用nc命令来…

悦亮少儿眼科樊广祥:远视储备是妈妈都该知道的眼科知识!

近视的“低龄化”和“高度化”问题日益严重&#xff0c;如何预防近视或推迟近视发生&#xff0c;已成为大家都非常关注的话题。这其中&#xff0c;“远视储备”一词也为越来越多的人所知晓。 为了帮助大家更好的理解远视储备、从而帮助孩子预防近视&#xff0c;悦亮少儿眼科(宁…

Java 期末复习进阶版

(一) 方法重载 1.同一个类中多个方法具有相同的方法名,不同的______称为方法的重载.(参数列表) 2.在某个类中存在一个方法:void getSort(int x),以下能作为这个方法的重载的声明的是(C). A)public getSort(float x) B)int getSort(int y) C)double getSort(int x,int y) D)vo…