尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

ddddocr: 滑块验证码的一个例子

ddddocr: 滑块验证码的一个例子
📅 发布时间:2026/6/19 4:23:57

一,代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import Byfrom selenium.webdriver.common.action_chains import ActionChainsimport timeimport pyautogui
import pyperclip
from urllib.parse import urlparse, parse_qsfrom ddddocr import DdddOcrdef change_url(url):# 就在当前标签页打开网页driver.get(url)print(driver.title)# 获取所有窗口句柄并切换到最后一个handles = driver.window_handlesdriver.switch_to.window(handles[-1])def open_new_url(url):# 就在当前标签页打开网页driver.execute_script("window.open('"+url+"', '_blank');")# 获取所有窗口句柄并切换到最后一个handles = driver.window_handlesdriver.switch_to.window(handles[-1])def get_name_by_url(url):parsed_url = urlparse(url)filename = parsed_url.path.split('/')[-1]print(filename)  # 输出: file.txtreturn filenamedef save_one_img(driver,pic,dest_file):action = ActionChains(driver).move_to_element(pic)  # 移动到该元素action.context_click(pic)  # 右键点击该元素action.perform() # 执行pyautogui.typewrite(['v']) # 敲击V进行保存# 单击图片另存之后等1s敲回车time.sleep(1)# dest_file = dest_dir+"/"+no_extpyperclip.copy(dest_file)  # 把 指定的路径拷贝到过来time.sleep(1)  # 等待一秒pyautogui.hotkey('ctrlleft', 'v')  # 粘贴time.sleep(0.5)  # 等待一秒pyautogui.typewrite(['enter'])if __name__ == '__main__':# 指定驱动路径driver_path = '/opt/soft/chromedriver-linux64/chromedriver'# 创建Service对象并传入ChromeOptionsservice = Service(driver_path)# 得到optionschrome_options = Options()chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")driver = webdriver.Chrome(options=chrome_options,service=service)# 通过JavaScript在新窗口打开URL# URL = 'https://movie.douban.com/explore?support_type=movie&is_all=false&category=%E7%83%AD%E9%97%A8&type=%E5%85%A8%E9%83%A8'URL = 'https://sso1.xxx.cn/websitelogin.html'open_new_url(URL)time.sleep(3)# print(driver.page_source)# 打开滑动时的浮动框"""基础鼠标悬停操作"""# 定位需要悬停的元素code_img = driver.find_element(By.ID, "id-code-btn")# 创建ActionChains实例actions = ActionChains(driver)# 构建悬停操作链actions.move_to_element(code_img)  # 移动鼠标到元素# 执行操作actions.perform()print("鼠标悬停操作执行完成")time.sleep(1)'''time.sleep(0.5)action_chains.drag_and_drop_by_offset(drag_btn, 10, 0).perform()time.sleep(0.5)action_chains.drag_and_drop_by_offset(drag_btn, 10, 0).perform()time.sleep(0.5)action_chains.drag_and_drop_by_offset(drag_btn, 10, 0).perform()'''# 获取背景图的地址back_img = driver.find_element(By.XPATH, "//div[@id='id-code-img']/div[@class='code-img-con']/img[@class='code-back-img']")print(back_img)print(back_img.tag_name)# back_src = back_img.get_attribute('src')back_src = back_img.get_attribute('src')back_name = get_name_by_url(back_src)no_ext = back_name.split('.')[0]ext = back_name.split('.')[1]# 保存图片dest_dir = "/data/python/xianyu/slider/"dest_file = dest_dir+no_extsave_one_img(driver,back_img,dest_file)time.sleep(1)  # 等待一秒# 获取mask的地址"""基础鼠标悬停操作"""# 定位需要悬停的元素code_img = driver.find_element(By.ID, "id-code-btn")# 创建ActionChains实例actions = ActionChains(driver)# 构建悬停操作链actions.move_to_element(code_img)  # 移动鼠标到元素# 执行操作actions.perform()print("鼠标悬停操作执行完成")time.sleep(1)mask_img = driver.find_element(By.XPATH, "//div[@id='id-code-img']/div[@class='code-img-con']/div[@class='code-mask']/img[@class='code-front-img']")print(mask_img)print(mask_img.tag_name)# back_src = back_img.get_attribute('src')mask_src = mask_img.get_attribute('src')mask_name = get_name_by_url(mask_src)mask_no_ext = mask_name.split('.')[0]mask_ext = mask_name.split('.')[1]# 保存图片#dest_dir = "/data/python/xianyu/slider/"dest_mask_file = dest_dir+mask_no_extsave_one_img(driver,mask_img,dest_mask_file)time.sleep(1)  # 等待一秒# 得到mask在背景图上的位置ocr = DdddOcr(det=False, ocr=False)with open(back_name, "rb") as f:background = f.read()with open(mask_name, "rb") as f:slide_block = f.read()pos = ocr.slide_match(slide_block,background)print(f"缺口位置: {pos}")left = pos['target'][0]left = left-2    #校正位置   print(f"目标left: {left}")"""基础鼠标悬停操作"""# 定位需要悬停的元素code_img = driver.find_element(By.ID, "id-code-btn")# 创建ActionChains实例actions = ActionChains(driver)# 构建悬停操作链actions.move_to_element(code_img)  # 移动鼠标到元素# 执行操作actions.perform()print("鼠标悬停操作执行完成")time.sleep(1)# 得到按钮drag_btn = driver.find_element(By.XPATH, "//div[@id='id-code-btn']/div[@class='code-btn-img code-btn-m']")# 拖动按钮到目标位置action_chains = ActionChains(driver)action_chains.drag_and_drop_by_offset(drag_btn, left, 0).perform()drag_btn.click()

 

 

二,效果测试:

image

相关新闻

  • 恢复Windows图片查看器
  • B2B企业必看:2025年5家TOB场景GEO服务商深度测评
  • UFS简介

最新新闻

  • DeepSeek-V4高效长上下文推理技术解析
  • 技术解析-CPR曲面重建:从血管拉直到三维可视化的核心算法与临床价值
  • S12XS中断系统XINT配置详解:从原理到汽车电子实战
  • 【新】5p229基于python的新能源汽车数据分析系统的设计与实现3(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • MCU系统集成模块(SIM)解析:复位、中断与低功耗设计实战
  • 从零到一:基于JasperGold的FPV实战入门与避坑指南

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号