怎么用Python自动点击跳过各大视频播放器的贴片广告

怎么用Python自动点击跳过各大视频播放器的贴片广告

Python

Selenium模拟点击是绕过可跳过广告最可行方案,但仅适用于含“跳过”按钮或“X”关闭按钮的广告;需处理iframe切换、动态元素等待及DOM变化,pyautogui和浏览器扩展因稳定性差不推荐。

selenium 模拟点击是最可行的路径,但成功率取决于广告类型

纯贴片广告(即视频开始前几秒的不可跳过广告)基本无法用自动化点击“跳过”,因为“跳过”按钮在广告结束前根本不存在。真正能干预的,是那些带「跳过广告」文字按钮的可跳过广告(常见于 Bilibili、腾讯视频、爱奇艺的部分非会员广告),或播放器右上角的「关闭」、「X」按钮。

必须明确:这不是通用解法,而是针对特定 DOM 结构的临时应对。浏览器驱动、页面加载时机、元素可见性都会直接影响点击是否生效。

  • selenium 是目前最稳定的选择;playwright 也可行,但部分国产播放器对它的检测更敏感
  • 务必使用无头模式(headless=False)先手动验证流程,否则失败时完全看不到发生了什么
  • 不要依赖固定 XPath,优先用 WebDriverWait 等待 visibility_of_element_located,而非 presence_of_element_located
  • 某些页面会动态插入广告容器(如 div[data-ad]iframe[id*="ad"]),需先切到 iframe 再找按钮

识别并等待「跳过」按钮出现的关键细节

很多脚本失败,是因为直接用 find_element 查找,而此时按钮还没渲染出来,或者被遮挡。Bilibili 的「跳过广告」按钮通常在倒计时 5 秒后才显示,且 class 名经常变(如 skip-btnad-skipicon-skip)。

推荐策略:

  • 监听 document.querySelectorAll('button, a') 中包含「跳过」「Skip」「关闭」「Close」文本的元素
  • WebDriverWait(driver, 10).until(lambda d: len(d.find_elements(By.XPATH, "//*[contains(text(), '跳过') or contains(text(), 'Skip') or @aria-label='Skip']")) > 0)
  • 点击前加判断:if element.is_displayed() and element.is_enabled(): element.click()
  • 避免点击后立即继续——有些广告点击跳过会触发二次加载,建议 time.sleep(0.8) 后再检查视频是否已播放

绕过 iframe 广告容器是多数人卡住的地方

腾讯视频和爱奇艺常把广告嵌在 iframe 里,主页面 DOM 根本找不到「跳过」按钮。不切换上下文,selenium 就像隔着玻璃按屏幕。

实操步骤:

MyMap AI

使用AI将想法转化为图表

  • 先定位广告 iframe:driver.find_element(By.XPATH, "//iframe[contains(@src, 'ad') or contains(@id, 'ad') or @data-ad]")
  • driver.switch_to.frame(iframe_element) 进入上下文
  • 再查找按钮(此时按钮就在 iframe 内部 DOM 中)
  • 点击完成后,必须 driver.switch_to.default_content() 切回来,否则后续操作全失效
  • 注意:部分 iframe 是沙箱化的(sandbox="allow-scripts"),可能禁止脚本访问,这种基本无解

为什么 pyautogui 和浏览器扩展方案不推荐

pyautogui 做图像识别点击(比如找「跳过」文字截图匹配)看似绕过 DOM 限制,但实际非常脆弱:分辨率变化、缩放比例、主题色调整、字体抗锯齿差异都会导致匹配失败;而且一旦窗口失焦或被遮挡就彻底失效。

浏览器扩展(如 Tampermonkey 脚本)理论上更底层,但现代视频站普遍启用 Content-Security-Policy 限制内联脚本,并通过 MutationObserver 监控 DOM 变动,随时移除注入的跳过逻辑。你写的 document.querySelector('.skip-btn').click() 很可能刚执行完就被重置。

所以,除非你只跑固定环境(同一台电脑、固定分辨率、固定浏览器版本、固定网站版本),否则别押注在这两类方案上。

真实场景中,最麻烦的不是写代码,而是每次网站更新后重新抓元素、调等待条件、验证 iframe 是否换名——这活没法一劳永逸。

本文地址:https://www.sztg.com.cn/article/635752.html

如非特殊说明,本站内容均来自于网友自主分享,如有任何问题均请联系我们进行处理!

猜您喜欢