登录163邮箱的滑块验证

embedded/2024/10/25 10:56:58/

登录163邮箱的滑块验证

登录163网易邮箱取数功能,查阅了很多博客的代码都不太稳定或者已失效,下面是经过修改的一个方案,成功率大概在90%以上

def get_verify(self, name='处理滑块移动'):max_distance = self.handle_picture()reality_distance = int((max_distance - 64) / 1.45)sleep(0.5)track_list = self.handle_tracks(reality_distance)# 获取滑块元素slider_handle = self.driver.find_element(By.XPATH, '//*[@class="yidun_slider"]')ActionChains(self.driver).click_and_hold(slider_handle).perform()for i in track_list:ActionChains(self.driver).move_by_offset(i, 0).perform()sleep(1)ActionChains(self.driver).release().perform()def handle_picture(self):bg_img = re.findall(r'alt="验证码背景".*?src="(.*?)"', self.driver.page_source)[0]hk_img = re.findall(r'alt="验证码滑块".*?src="(.*?)"', self.driver.page_source)[0]with open('./bg_img.jpg', 'wb') as f:f.write(requests.get(bg_img).content)f.close()with open('./hk_img.png', 'wb') as f:f.write(requests.get(hk_img).content)f.close()# 读取背景图片和缺口图片bg_img = cv2.imread('./bg_img.jpg')  # 背景图片tp_img = cv2.imread('./hk_img.png')  # 缺口图片# 识别图片边缘bg_edge = cv2.Canny(bg_img, 100, 200)tp_edge = cv2.Canny(tp_img, 100, 200)# 转换图片格式bg_pic = cv2.cvtColor(bg_edge, cv2.COLOR_GRAY2RGB)tp_pic = cv2.cvtColor(tp_edge, cv2.COLOR_GRAY2RGB)# 缺口匹配res = cv2.matchTemplate(bg_pic, tp_pic, cv2.TM_CCOEFF_NORMED)min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)  # 寻找最优匹配x = max_loc[0]  # 滑块在验证图片的x坐标(左边)# 绘制方框th, tw = tp_pic.shape[:2]tl = max_loc  # 左上角点的坐标br = (tl[0] + tw, tl[1] + th)  # 右下角点的坐标cv2.rectangle(bg_img, tl, br, (0, 0, 255), 2)  # 绘制矩形# cv2.imwrite(r'C:\test\out.jpg', bg_img)  # 保存在本地return int(br[0])@staticmethod
def handle_tracks(distance):t = 0.1speed = 0current = 0mid = 3 / 5 * distancetrack_list = []while current < distance:if current < mid:# a = random.choice([1, 2, 3])a = 3else:# a = random.choice([-1, -2, -3])a = -4move_track = speed * t + 0.5 * a * t ** 2track_list.append(round(move_track))speed = speed + a * tcurrent += move_track# 模拟人类来回移动了一小段end_track = [1, 0] * 10 + [0] * 10 + [-1, 0] * 10track_list.extend(end_track)offset = sum(track_list) - distance# 由于四舍五入带来的误差,这里需要补回来if offset > 0:track_list.extend(offset * [-1, 0])elif offset < 0:track_list.extend(offset * [1, 0])return track_list

http://www.ppmy.cn/embedded/132312.html

相关文章

ArcGIS 10.8 安装教程

目录 一、ArcGIS10.8二、安装链接三、安装教程四、ArcGIS实战 &#xff08;一&#xff09;ArcGIS10.8 1. 概述 ArcGIS 10.8是由美国Esri公司开发的GIS平台&#xff0c;用于处理、分析、显示和管理地理数据&#xff0c;并实现数据共享。它具有新特性和功能&#xff0c;性能更…

数据结构笔记(其七)--树(二叉树)

目录 1.知识总览 2.二叉树的基本概念 &#xff08;1&#xff09;.满二叉树 &#xff08;2&#xff09;.完全二叉树 &#xff08;3&#xff09;.二叉排序树 &#xff08;4&#xff09;.平衡二叉树 3.二叉树常考点 i.叶子结点与二分支结点的数量关系 ii.第i 层的最多结点数&…

如何有效管理企业?(7个关键要素)

什么是企业&#xff1f; 用通俗的语言来说&#xff0c;企业是 “以商品和服务换取金钱&#xff0c;主要目的是赚取利润&#xff0c;其中涉及风险以及时间、创意和资金的投入”。 “如果你能把一家企业经营好&#xff0c;你就能把任何一家企业都经营好。”—— 理查德・布兰森…

Python 爬虫实战之爬拼多多商品做数据分析

一、项目背景 在电商领域&#xff0c;拼多多作为一家具有广泛影响力的平台&#xff0c;拥有大量的商品信息和用户数据。通过爬取拼多多商品数据并进行分析&#xff0c;可以了解市场趋势、消费者需求以及竞争对手情况&#xff0c;为企业决策和产品优化提供有力支持。 二、技术准…

Python学习路线:从新手到专家

引言 Python 是一种高级编程语言&#xff0c;以其简洁清晰的语法而闻名&#xff0c;被广泛应用于Web开发、数据科学、人工智能、自动化脚本等领域。无论你是编程初学者还是有经验的开发者&#xff0c;Python 都是一个值得学习的语言。本文将提供一份详细的Python学习路线图&am…

Spring boot快速集成开发

目录 1. 创建 Spring Boot 项目 2. 项目结构 3. 编写代码 3.1 创建实体类 3.2 创建数据访问层 3.3 创建服务层 3.4 创建控制器 4. 配置数据库 5. 启动应用 6. 运行项目 7. 测试 API 8. H2 控制台 在 Spring Boot 中快速集成开发的步骤通常包括创建项目、添加依赖、编写…

【实战案例】Django框架表单处理及数据库交互

本文基于之前内容列表如下&#xff1a; 【图文指引】5分钟搭建Django轻量级框架服务 【实战案例】Django框架基础之上编写第一个Django应用之基本请求和响应 【实战案例】Django框架连接并操作数据库MySQL相关API 【实战案例】Django框架使用模板渲染视图页面及异常处理 更新编…

electron展示下载进度条

我们使用electron下载文件时&#xff0c;会发现不像浏览器一样会有地方展示下载进度&#xff0c;这导致下载一些大文件时不知道下载进度到哪里了 下面我们通过electron提供的will-download监听和element-plus中的ElNotification和ElProgress组件实现这一功能 实现逻辑 触发…