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

使用Playwright无法捕获m3u8文件请求URL,请问遗漏了哪些设置?

Playwright无法捕获m3u8请求的排查方案

核心遗漏点

  • 未触发视频播放逻辑:绝大多数视频站点的m3u8索引请求仅会在播放动作触发后发起,原有代码仅完成了页面初始加载,没有触发播放操作,自然不会捕获到对应请求。
  • 等待策略不合理:networkidle的判定逻辑是网络空闲500ms即停止等待,很多站点的播放器初始化、m3u8请求会在这个节点之后才发起,无法被监听到。
  • 缺少反爬伪装:默认的无头浏览器模式很容易被站点反爬策略识别,导致播放器无法正常加载、请求被拦截。
  • 未覆盖Worker请求:部分站点会通过Web Worker、Service Worker发起m3u8请求,仅监听页面的response事件会漏掉这部分请求。
  • 没有针对性的请求匹配规则:没有针对m3u8的后缀、响应头做过滤,可能出现漏判。

修正后代码示例

from playwright.sync_api import sync_playwright

url = "替换为你的目标视频页面地址"

with sync_playwright() as p:
    browser = p.chromium.launch(
        # 测试阶段建议先开有头模式确认流程正常,再切换为无头
        headless=False,
        args=[
            # 禁用自动化特征标识,避免反爬识别
            "--disable-blink-features=AutomationControlled",
            "--start-maximized"
        ]
    )
    # 构造正常的浏览器上下文,减少反爬拦截概率
    context = browser.new_context(
        viewport={"width": 1920, "height": 1080},
        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"
    )
    page = context.new_page()

    # 统一的响应处理逻辑
    def handle_response(response):
        # 匹配m3u8请求,同时匹配后缀和响应头避免漏判
        if ".m3u8" in response.url or response.headers.get("content-type", "") in ["application/x-mpegURL", "application/vnd.apple.mpegurl"]:
            print(f"捕获到m3u8地址:{response.url}")

    # 监听页面请求
    page.on("response", handle_response)
    # 监听Worker发起的请求
    context.on("serviceworker", lambda sw: sw.on("response", handle_response))

    # 页面加载使用domcontentloaded即可,不需要等networkidle
    page.goto(url, wait_until="domcontentloaded", timeout=90000)
    # 等待播放器元素加载完成
    page.wait_for_selector("video", timeout=15000)
    # 模拟触发播放,可根据站点实际的播放按钮选择器修改
    try:
        page.click(".player-play-btn", timeout=5000)
    except:
        # 部分站点直接点击video标签即可触发播放
        page.click("video", timeout=5000)
    # 主动等待10秒,确保所有请求完成发起
    page.wait_for_timeout(10000)

    page.close()
    context.close()
    browser.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:45:03