python 模拟移动
2023-04-18 12:35:19 时间
滑动验证码破解大致流程为:
1 - 获取缺口图片与原图片
2 - 图像对比,得出缺口左上角坐标
3 - 构造轨迹算法
4 - 使用selenium模拟移动滑块
本篇主要针对模拟移动进行探讨。
使用工具:python,selenium,chromedriver,chrom浏览器
操作步骤讲解环节
下面就是喜闻乐见的操作步骤讲解环节了(´◔౪◔)
代码部分:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 导本地包的模块
import os
import sys
path = os.path.dirname(os.path.dirname(__file__))
sys.path.append(path)
import test
# 108这个值就是前面图像对比后得出的缺口左上角的横坐标
# 这里导入横坐标,然后获取先匀加速后匀减速的轨迹列表
track = test.get_track(108)
print(track)
driver = webdriver.Chrome()
url = 'http://www.geetest.com/Register'
wait = WebDriverWait(driver, 10, 0.5)
driver.get(url)
# 获取到指定的元素
Phone_Number = driver.find_element_by_xpath('/html/body/div[1]/div/div[8]/div/div[2]/div[1]/div[2]/div/div[2]/div[1]/input')
Verification_Code = driver.find_element_by_xpath('/html/body/div[1]/div/div[8]/div/div[2]/div[1]/div[2]/div/div[2]/div[2]/input')
Code_Button = driver.find_element_by_xpath('/html/body/div[1]/div/div[8]/div/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[1]/div')
Phone_Number.send_keys('12345678910')
Code_Button.click()
# 等待className为geetest_slider_button的元素在元素表中出现
slider = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'geetest_slider_button')))
# 点击和按住
ActionChains(driver).click_and_hold(slider).perform()
# 拖动
for x in track:
ActionChains(driver).move_by_offset(xoffset=x, yoffset=0).perform()
time.sleep(2)
# 松开鼠标
ActionChains(driver).release().perform()
time.sleep(2)
driver.quit()
**要点总结:
1 - 需要用到前面两篇文章的参数,图像对比得出缺口左上角的横坐标,然后使用轨迹移动算法,获取轨迹列表
2 - 使用selenium的鼠标操作方法完成滑块拖动**
相关文章
- Python使用tkinter组件Label显示简单数学公式
- 内网渗透之DCOM横向移动
- 以目标为导向的语义交流的共同语言——一个课程学习框架
- python爬虫前奏【成信笔记】
- HTML 5 File API:文件拖放上传功能
- 教你快速创建 Python 虚拟环境
- pyenv 实现Python多版本自由切换
- 用 Python 对 Excel文件进行批量操作
- Python - 接入钉钉机器人
- Python - 抓取 iphone13 pro 线下店供货信息并发送到钉钉机器人,最后设置为定时任务
- crontab - 解决 mac 下通过 crontab 设置了 Python 脚本的定时任务却无法运行
- [源码解析] PyTorch分布式(5) ------ DistributedDataParallel 总述&如何使用
- Python科普系列——类与方法(上篇)
- SAP对STO的交货单执行PGI,报错 -Fld selectn for mvmt type 643 acct 400020 differs
- Spring Boot 实现通用 Auth 认证的 4 种方式
- 盘点4种使用Python批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据
- OushuDB 学习经验分享(三):技术特点
- Java和Python思维方式的不同之处
- Python中日志记录新技能
- 奥比中光Gemini OpenCV—Python使用