爬虫模拟移动
2023-04-18 14:28:05 时间
爬虫的一大难点就是破解验证码。验证码大致上分为文字识别、滑动、文字点击、图像识别等,本文讲的是其中的 滑动验证码
。滑动验证码,需要我们将滑块移至图片缺口位置。实际上我们可以通过对比完整图片和缺口图片各个像素点的RGB值,得出缺口位置左上角的坐标,然后构造轨迹算法使用selenium模拟移动滑块即可。
滑动验证码破解大致流程为:
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的鼠标操作方法完成滑块拖动**
相关文章
- 抢先看,2021 年微软 Win11/Win10 的 Edge 浏览器还将更新什么内容
- 微软发布Windows 365 云电脑,随时随地用上Windows 11/Windows 10 PC,几分钟就能创建
- 微软正式发布 Windows 365 云电脑:覆盖安卓/iPad/Mac 等设备
- Windows 11系统设置焕然一新!都有这些新特性
- Windows10新版又推送了!一起来看看更新了什么
- 消息称微软 Windows 11 Cloud PC 云电脑功能将支持安卓/iPhone/Mac 设备访问
- 深度体验Windows 11:解答你最关心的5个问题
- 在 Linux 终端将图像转换成 ASCII 艺术
- 微软被诉 Windows 字体侵权:涉 WinXP/2003 等暂不涉及 Windows 11/Windows 10
- 从Linux源码看Epoll
- Firefox 90 火狐浏览器正式发布
- Linux从头学:如何告诉 CPU,代码段、数据段、栈段在内存中什么位置?
- 聊聊Linux远程管理协议相关知识
- 谷歌 Chrome 浏览器“复制”了微软 Edge 全新分享中心
- Windows 11设置建议更好用 还内置了硬盘健康提醒
- 一篇文章带你学习CPU架构知识
- 从1.0到11 Windows系统脱胎换骨
- GitHub 访问慢?手把手教你几招解决它!
- Windows 11为设置和服务引入全新推荐功能
- 如何将 CentOS 迁移到 AlmaLinux 并避免数据中心停机