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

如何用Python+Selenium绕过戴尔支持页搜索提交时的验证弹窗

解决戴尔支持页面自动化验证弹窗的方案

一、优先使用戴尔官方API(最可靠)

戴尔提供官方支持API,直接调用获取设备信息比浏览器模拟更稳定,完全不会触发验证机制。

示例代码:

import requests

def get_dell_device_info(service_tag):
    url = f"https://www.dell.com/support/api/v2/assetinfo/{service_tag}?apiversion=3.0"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
    }
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        data = response.json()
        model = data['AssetDetails']['ProductHeader']['ProductName']
        return model
    return None

for service_tag in ['JX0JL13', '20M11J3', 'BH7C3M2', '6MYH5S2']:
    model = get_dell_device_info(service_tag)
    print(f"服务标签 {service_tag} 对应的型号: {model}")

二、优化浏览器自动化行为,降低检测概率

如果必须用浏览器模拟,通过以下方式让操作更接近真人,减少触发验证的几率:

  • 添加随机延迟:输入、点击操作间加入1-3秒随机等待
  • 用显式等待:替换直接find_element,等元素加载完成再操作
  • 模拟滚动、鼠标移动:进入页面后先滚动,再移动鼠标到输入框点击
  • 更换User-Agent:定期替换浏览器的User-Agent字符串

修正后的示例代码:

import time
import random
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

url = 'https://www.dell.com/support/home/en-in'
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)

for service_tag in ['JX0JL13', '20M11J3', 'BH7C3M2', '6MYH5S2']:
    driver.get(url)
    # 随机延迟+滚动页面
    time.sleep(random.uniform(1, 2))
    driver.execute_script("window.scrollTo(0, 200);")
    time.sleep(random.uniform(0.5, 1.5))
    
    # 显式等待输入框并操作
    input_element = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="inpEntrySelection"]')))
    input_element.click()
    input_element.clear()
    # 逐个字符输入模拟真人
    for char in service_tag:
        input_element.send_keys(char)
        time.sleep(random.uniform(0.1, 0.3))
    
    # 等待按钮可点击后提交
    submit_btn = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="btn-entry-select"]')))
    submit_btn.click()
    
    try:
        # 等待验证弹窗消失
        wait.until(EC.invisibility_of_element_located((By.CSS_SELECTOR, '.captcha-container')))
    except:
        pass
    
    # 等待型号元素加载并获取内容
    model = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="site-wrapper"]/div/div[4]/div[1]/div[2]/div[1]/div[2]/div/div/div/div[2]/h1'))).text
    print(f"服务标签 {service_tag} 对应的型号: {model}")
    time.sleep(random.uniform(2, 3))

driver.quit()

三、使用反检测浏览器工具

用undetected-chromedriver替代普通ChromeDriver,它会自动处理Chrome的自动化检测机制,降低被识别为机器人的概率。

安装命令:

pip install undetected-chromedriver

示例代码:

import time
import random
import undetected_chromedriver as uc
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

url = 'https://www.dell.com/support/home/en-in'
driver = uc.Chrome()
wait = WebDriverWait(driver, 10)

for service_tag in ['JX0JL13', '20M11J3', 'BH7C3M2', '6MYH5S2']:
    driver.get(url)
    time.sleep(random.uniform(1, 2))
    
    input_element = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="inpEntrySelection"]')))
    input_element.click()
    input_element.clear()
    input_element.send_keys(service_tag)
    
    submit_btn = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="btn-entry-select"]')))
    submit_btn.click()
    
    model = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="site-wrapper"]/div/div[4]/div[1]/div[2]/div[1]/div[2]/div/div/div/div[2]/h1'))).text
    print(f"服务标签 {service_tag} 对应的型号: {model}")
    time.sleep(random.uniform(2, 3))

driver.quit()

四、主动处理验证弹窗

如果弹窗已出现,可通过代码等待倒计时结束,或识别验证按钮点击:

try:
    # 等待验证弹窗出现,再等待其消失
    wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'captcha-timer')))
    wait.until(EC.invisibility_of_element_located((By.CLASS_NAME, 'captcha-timer')))
except:
    # 未出现弹窗则跳过
    pass

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 00:36:28