dede 网站名称 空的,网站开发行业新闻,养生网站模板,网页设计如何设置背景结果演示 滑块验证码登录 测试网站
提供各类型验证码识别验证#xff0c;主要提供人机识别与验证服务
行为验证4.0-适应型验证码-滑动验证,点选验证,图片验证-极验GeeTest 代码实现 相关前置依赖可参考 自动化脚本-图片验证码识别登陆-CSDN博客 具体实现
# -*- coding: u…结果演示 滑块验证码登录 测试网站
提供各类型验证码识别验证主要提供人机识别与验证服务
行为验证4.0-适应型验证码-滑动验证,点选验证,图片验证-极验GeeTest 代码实现 相关前置依赖可参考 自动化脚本-图片验证码识别登陆-CSDN博客 具体实现
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.chrome.options import Options
import requests
import re
import ddddocr# 等待元素出现并点击
def wait_and_click(driver, by, identifier):element WebDriverWait(driver, 10).until(EC.element_to_be_clickable((by, identifier)))ActionChains(driver).move_to_element(element).click(element).perform()# 执行JS脚本
def execute_script(driver, script):driver.execute_script(script)WebDriverWait(driver, 10).until(lambda d: d.execute_script(return document.readyState) complete)# 保存图片
def save_img(driver, xpath, img_name):element WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, xpath)))style element.get_attribute(style)url re.findall(r[(](.*?)[)], style)[0]url eval(url)img_response requests.get(url, verifyFalse)with open(img_name, wb) as f:f.write(img_response.content)# 计算滑块滑动位置
def ocr_slide(slide_pic, bg_pic):# slide_pic: 滑块的路径# bg_pic: 背景的路径# return: 移动到的坐标位置det ddddocr.DdddOcr(detFalse, ocrFalse)with open(slide_pic, rb) as f:target_bytes f.read()with open(bg_pic, rb) as f:background_bytes f.read()res det.slide_match(target_bytes, background_bytes, simple_targetTrue)print(res.get(target))return resdef main():options Options()options.add_experimental_option(detach, True)options.add_argument(--start-maximized)driver webdriver.Chrome(optionsoptions)driver.get(https://www.geetest.com/adaptive-captcha-demo)execute_script(driver, window.scrollBy(0,130);)wait_and_click(driver, By.XPATH, //button[text()滑动拼图验证])wait_and_click(driver, By.XPATH, //div[aria-label点击按钮开始验证])save_img(driver, //*[idcaptcha]/div[2]/div[1]/div[4]/div[1]/div[2]/div/div/div[1]/div[1]/div[1], slide.png)save_img(driver, //*[idcaptcha]/div[2]/div[1]/div[4]/div[1]/div[2]/div/div/div[1]/div[2], bg.png)# 等待滑块元素加载完成wait WebDriverWait(driver, 10)slide wait.until(EC.presence_of_element_located((By.XPATH, //*[idcaptcha]/div[2]/div[1]/div[4]/div[1]/div[2]/div/div/div[1]/div[1]/div[1])))# 确定滑块坐标res ocr_slide(slide.png, bg.png)x1, y1, x2, y2 res.get(target)if res is not None:# 等待滑块元素可点击wait.until(EC.element_to_be_clickable((By.XPATH, //*[idcaptcha]/div[2]/div[1]/div[4]/div[1]/div[2]/div/div/div[1]/div[1]/div[1])))# 执行滑动动作slide_width slide.size.get(width)ActionChains(driver).drag_and_drop_by_offset(sourceslide, xoffset(x1x2)/2-(slide_width/2), yoffset0).perform()else:print(未能识别滑块位置。)# 关闭驱动# driver.quit()if __name__ __main__:main()