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

如何隐藏Python Selenium避免浏览器检测及获取JW Player下载链接

解决Selenium被检测及JW Player视频链接获取问题

一、绕过Selenium浏览器检测的实用方案

Fake-user-agent仅修改UA不足以规避检测,浏览器还有诸多自动化特征会暴露爬虫,试试以下方案:

  • 通过ChromeOptions隐藏自动化标识
    禁用自动化扩展、修改浏览器启动参数,直接覆盖navigator.webdriver属性:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    # 移除自动化提示条与扩展
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    # 禁用自动化控制特征
    options.add_argument("--disable-blink-features=AutomationControlled")
    # 直接设置真实浏览器UA(比动态生成更稳定)
    options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")
    
    driver = webdriver.Chrome(options=options)
    # 执行JS覆盖webdriver属性
    driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
    
  • 使用undetected-chromedriver替代原生Selenium
    该库针对Chrome反检测做了专门优化,自动处理大部分指纹特征,安装后直接调用:

    import undetected_chromedriver as uc
    
    driver = uc.Chrome()
    # 后续操作与原生Selenium完全一致
    
  • 模拟真实用户操作节奏
    避免连续快速执行操作,添加随机延迟:

    import time
    import random
    
    # 点击前随机延迟1-3秒
    time.sleep(random.uniform(1, 3))
    driver.find_element(By.XPATH, "//button[contains(@class, 'jw-icon-play')]").click()
    

二、JW Player 8.26.5的操作与视频链接获取

1. 确保点击启动播放器的稳定性

使用显式等待确保元素加载完成后再操作:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待播放按钮可点击
play_btn = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, ".jw-icon.jw-icon-play"))
)
play_btn.click()

2. 提取动态视频链接

JW Player初始化后会在全局暴露jwplayer()实例,直接执行JS提取播放列表:

# 执行JS获取播放器播放列表数据
player_playlist = driver.execute_script("return jwplayer().getPlaylist()")
# 遍历提取视频链接
for media_item in player_playlist:
    video_url = media_item.get('file')
    if video_url:
        print("视频下载链接:", video_url)

若链接为动态加密生成,可通过浏览器抓包获取:
打开开发者工具(F12)的Network面板,筛选Media类型,点击播放后即可看到视频请求的URL,直接复制后用Python的requests库请求(需携带页面Cookie与UA)。


内容的提问来源于stack exchange,提问作者Copy-Ninja

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:35:21