前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 模拟移动

python 模拟移动

原创
作者头像
花落花相惜
发布2021-12-06 13:11:40
8190
发布2021-12-06 13:11:40
举报
文章被收录于专栏:花落的技术专栏
滑动验证码破解大致流程为:
1 - 获取缺口图片与原图片
2 - 图像对比,得出缺口左上角坐标
3 - 构造轨迹算法
4 - 使用selenium模拟移动滑块

本篇主要针对模拟移动进行探讨。

使用工具:python,selenium,chromedriver,chrom浏览器

操作步骤讲解环节


下面就是喜闻乐见的操作步骤讲解环节了(´◔౪◔)

代码部分:

代码语言:txt
复制
from selenium import webdriver
代码语言:txt
复制
from selenium.webdriver.common.action_chains import ActionChains
代码语言:txt
复制
import time
代码语言:txt
复制
from selenium.webdriver.common.by import By
代码语言:txt
复制
from selenium.webdriver.support.ui import WebDriverWait
代码语言:txt
复制
from selenium.webdriver.support import expected_conditions as EC
代码语言:txt
复制
# 导本地包的模块
代码语言:txt
复制
import os
代码语言:txt
复制
import sys
代码语言:txt
复制
path = os.path.dirname(os.path.dirname(__file__))
代码语言:txt
复制
sys.path.append(path)
代码语言:txt
复制
import test
代码语言:txt
复制
# 108这个值就是前面图像对比后得出的缺口左上角的横坐标
代码语言:txt
复制
# 这里导入横坐标,然后获取先匀加速后匀减速的轨迹列表
代码语言:txt
复制
track = test.get_track(108)
代码语言:txt
复制
print(track)
代码语言:txt
复制
driver = webdriver.Chrome()
代码语言:txt
复制
url = 'http://www.geetest.com/Register'
代码语言:txt
复制
wait = WebDriverWait(driver, 10, 0.5)
代码语言:txt
复制
driver.get(url)
代码语言:txt
复制
# 获取到指定的元素
代码语言:txt
复制
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')
代码语言:txt
复制
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')
代码语言:txt
复制
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')
代码语言:txt
复制
Phone_Number.send_keys('12345678910')
代码语言:txt
复制
Code_Button.click()
代码语言:txt
复制
# 等待className为geetest_slider_button的元素在元素表中出现
代码语言:txt
复制
slider = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'geetest_slider_button')))
代码语言:txt
复制
# 点击和按住
代码语言:txt
复制
ActionChains(driver).click_and_hold(slider).perform()
代码语言:txt
复制
# 拖动
代码语言:txt
复制
for x in track:
代码语言:txt
复制
    ActionChains(driver).move_by_offset(xoffset=x, yoffset=0).perform()
代码语言:txt
复制
time.sleep(2)
代码语言:txt
复制
# 松开鼠标
代码语言:txt
复制
ActionChains(driver).release().perform()
代码语言:txt
复制
time.sleep(2)
代码语言:txt
复制
driver.quit()

**要点总结:

1 - 需要用到前面两篇文章的参数,图像对比得出缺口左上角的横坐标,然后使用轨迹移动算法,获取轨迹列表

2 - 使用selenium的鼠标操作方法完成滑块拖动**

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 操作步骤讲解环节
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档