相关推荐recommended
爬虫(滑块验证的破解)
作者:mmseoamin日期:2024-02-24

基于滑块的验证破解 —— Selenium

爬虫(滑块验证的破解),在这里插入图片描述,第1张

1.可分为三个核心步骤
  • 获取验证码图片
  • 识别图片,计算轨迹距离
  • 寻找滑块,控制滑动

    打开网址:https://www.geetest.com/adaptive-captcha-demo

    2.获取验证图片
    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()