基于滑块的验证破解 ------ Selenium
1.可分为三个核心步骤
- 获取验证码图片
- 识别图片,计算轨迹距离
- 寻找滑块,控制滑动
打开网址:https://www.geetest.com/adaptive-captcha-demo
2.获取验证图片
python
import re
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
service = Service('driver/chromedriver.exe')
driver = webdriver.Chrome(service=service)
# 1.打开首页
driver.get('https://www.geetest.com/adaptive-captcha-demo')
# 2.点击【滑动图片验证】
tag = WebDriverWait(driver, 30, 0.5).until(lambda dv: dv.find_element(
By.XPATH,
'//*[@id="gt-showZh-mobile"]/div/section/div/div[2]/div[1]/div[2]/div[3]/div[3]',
))
tag.click()
# 3.点击开始验证
tag = WebDriverWait(driver, 30, 0.5).until(lambda dv: dv.find_element(
By.CLASS_NAME,
'geetest_btn_click',
))
tag.click()
# 4.获取背景图片 - 使用了闭包
def fetch_image_func(class_name):
def inner(dv):
tag_object = dv.find_element(
By.CLASS_NAME,
class_name,
)
style_string = tag_object.get_attribute('style')
match_list = re.findall('url\(\"(.*)\"\);', style_string)
if match_list:
return match_list[0]
return
return inner
bg_img_url = WebDriverWait(driver, 30, 0.5).until(fetch_image_func('geetest_bg'))
print(f'背景图:{bg_img_url}')
slice_image_url = WebDriverWait(driver, 30, 0.5).until(fetch_image_func('geetest_slice_bg'))
print(f'背景图:{slice_image_url}')
time.sleep(2)
driver.close()
t(f'背景图:{slice_image_url}')
time.sleep(2)
driver.close()