You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Selenium拖动中证指数网滑块验证失败求助

阿里云滑块验证失败问题(访问中证指数网站)

问题场景

访问https://www.csindex.com.cn时,页面弹出阿里云滑块验证组件,需将滑块拖动至最右侧完成验证。验证组件的HTML结构如下:

<div id="waf_nc_block" style="display: block;">
    <div class="waf-nc-mask"></div>
    <div id="WAF_NC_WRAPPER" class="waf-nc-wrapper">
        <p class="waf-nc-title">访问验证</p>
        <p class="waf-nc-description">为保证您的正常访问,请进行如下验证</p>
        <p id="waf-nc-traceid" class="waf-nc-traceid-class">日志ID: ac11000117319689145554401e1a0c</p>
        <div id="nocaptcha">
            <div id="aliyunCaptcha-window-embed" class="aliyunCaptcha-show"
                 style="padding:0;border:none;display:block;">
                <div id="aliyunCaptcha-sliding-wrapper" class="aliyun-captcha">
                    <div id="aliyunCaptcha-sliding-body" class="sliding">
                        <div id="aliyunCaptcha-sliding-left" class="" style="width: 295px;"></div>
                        <div id="aliyunCaptcha-sliding-slider" class="" style="cursor: grabbing; left: 275px;"></div>
                        <div id="aliyunCaptcha-sliding-text-box" class="aliyunCaptcha-sliding-text-box"><span
                                id="aliyunCaptcha-sliding-text"
                                class="aliyunCaptcha-sliding-text">请按住滑块,拖动到最右边</span></div>
                    </div>
                    <span id="aliyunCaptcha-sliding-failTip"></span> <span id="aliyunCaptcha-errorTip"></span></div>
            </div>
        </div>
    </div>
</div>

尝试的Selenium操作代码

已尝试两种ActionChains拖动方式,但均触发验证错误:

  1. 直接偏移拖拽:
slider = driver.find_elements(by=By.XPATH, value="//div[@id = 'nocaptcha']//div[@id = 'aliyunCaptcha-sliding-slider']")[0]
ActionChains(driver).drag_and_drop_by_offset(slider, 280, 0).pause(3).perform()
  1. 分段拖动模拟人类操作:
ActionChains(driver).move_to_element(slider).click_and_hold().move_by_offset(120, 0).pause(.4).move_by_offset(100, 0).pause(.3).move_by_offset(60, 0).pause(.1).release().perform()

错误表现

操作后触发验证失败,提示页面停留过长,请刷新页面重试,错误状态下的HTML结构如下:

<div id="waf_nc_block" style="display: block;">
    <div class="waf-nc-mask"></div>
    <div id="WAF_NC_WRAPPER" class="waf-nc-wrapper">
        <p class="waf-nc-title">访问验证</p>
        <p class="waf-nc-description">为保证您的正常访问,请进行如下验证</p>
        <p id="waf-nc-traceid" class="waf-nc-traceid-class">日志ID: ac11000117320265050193350e6922</p>
        <div id="nocaptcha">
            <div id="aliyunCaptcha-window-embed" class="aliyunCaptcha-show"
                 style="padding:0;border:none;display:block;">
                <div id="aliyunCaptcha-sliding-wrapper" class="aliyun-captcha" style="background: white;">
                    <div id="aliyunCaptcha-sliding-body" class="sliding" style="display: none;">
                        <div id="aliyunCaptcha-sliding-left" class="" style="width: 300px;"></div>
                        <div id="aliyunCaptcha-sliding-slider" class="ok" style="cursor: grabbing; left: 280px;"></div>
                        <div id="aliyunCaptcha-sliding-text-box" class="aliyunCaptcha-sliding-text-box"><span
                                id="aliyunCaptcha-sliding-text" class="verified">验证中...</span></div>
                    </div>
                    <span id="aliyunCaptcha-sliding-failTip">  <span id="aliyunCaptcha-sliding-fail-text"
                                                                     class="aliyunCaptcha-sliding-fail-text aliyun-captcha">    <span
                            id="aliyunCaptcha-sliding-warning" class="aliyunCaptcha-sliding-warning"></span> 
    页面停留过长,请刷新页面重试    <br>(error:ac11000117320265050193350e6922) <br>  </span>  </span> <span
                        id="aliyunCaptcha-errorTip"></span></div>
            </div>
        </div>
    </div>
</div>

解决思路

1. 优化拖动节奏,减少不必要停顿

人类拖动滑块的行为是先快后慢、连贯平滑,而非多次停顿。尝试调整拖动逻辑,控制总时长在1-2秒内,接近终点时轻微减速微调:

import time
from selenium.webdriver.common.action_chains import ActionChains

slider = driver.find_element(By.ID, "aliyunCaptcha-sliding-slider")
action = ActionChains(driver)
action.click_and_hold(slider).perform()
# 快速移动大部分距离
action.move_by_offset(260, 0).perform()
# 终点前微调,模拟自然减速
time.sleep(0.1)
action.move_by_offset(20, 0).perform()
time.sleep(0.05)
action.release().perform()

2. 确保元素完全可交互后再操作

使用WebDriverWait等待滑块元素处于可点击状态,避免在元素未加载完成时执行操作:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

slider = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "aliyunCaptcha-sliding-slider"))
)

3. 隐藏自动化标识

Selenium默认会被网站检测到,通过ChromeOptions修改配置,禁用自动化特征:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options)
# 额外修改navigator.webdriver属性
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")

4. 缩短页面到验证的间隔时间

错误提示的“页面停留过长”可能指从页面加载到触发验证的时间太久。尝试在页面加载完成后,立即处理验证弹窗,不要长时间等待。


内容的提问来源于stack exchange,提问作者user17866890

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 04:29:53