如何隐藏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
相关产品推荐
相关产品推荐

