油猴脚本入门:5分钟搞定微博视频下载助手(附完整代码)

告别Python脚本!用油猴脚本一键下载B站视频/音频(含FFmpeg合成教程) 本文详细介绍了如何使用油猴脚本一键下载B站视频和音频,并提供了FFmpeg合成教程。相比传统的Python脚本和浏览器插件,油猴脚本无需复杂配置,自动适应接口变更,零环境依赖,是高效下载B站内容的理想解决方案。 阅读详情

从零到一:手把手打造你的第一个微博视频下载油猴脚本

不知道你有没有过这样的经历:在微博上刷到一个特别有意思的短视频,想保存下来分享给朋友或者自己收藏,结果发现微博官方并没有提供下载按钮。这时候你可能会想到用各种第三方工具,或者打开开发者工具去网络请求里找视频链接,整个过程既繁琐又不够优雅。如果你也有类似的困扰,那么今天这篇文章就是为你准备的。

我最近在开发一些浏览器自动化工具时,重新审视了油猴脚本这个老朋友。说实话,虽然现在各种浏览器扩展层出不穷,但油猴脚本那种轻量、灵活、即写即用的特性,在很多场景下依然无可替代。特别是对于微博视频下载这种特定需求,写一个专属脚本往往比安装一个功能臃肿的扩展要高效得多。

这篇文章的目标读者是那些有一定JavaScript基础,但可能从未接触过油猴脚本开发的开发者。我会用一个完整的微博视频下载脚本作为案例,带你走过从环境配置、脚本结构分析、代码编写到调试发布的完整流程。整个过程不需要复杂的开发环境,只需要一个浏览器和文本编辑器就能开始。

1. 油猴脚本开发环境搭建与核心概念

1.1 选择合适的脚本管理器

在开始编写油猴脚本之前,我们需要先安装一个脚本管理器。目前主流的浏览器脚本管理器有几个选择,每个都有其特点。我个人的选择标准是:开源、活跃维护、功能完整。

Tampermonkey 是目前最流行的选择,支持Chrome、Firefox、Safari等几乎所有主流浏览器。它的优势在于生态完善,有大量的用户脚本库可以直接安装使用。不过它的免费版本功能就足够我们开发使用了。

Violentmonkey 是另一个优秀的选择,完全开源且跨平台。我更喜欢它的简洁界面和更快的更新响应速度。对于开发者来说,它的调试工具也更加友好。

安装过程非常简单,以Chrome浏览器为例:

  1. 打开Chrome网上应用店
  2. 搜索"Tampermonkey"或"Violentmonkey"
  3. 点击"添加到Chrome"

安装完成后,你会在浏览器右上角看到脚本管理器的图标。点击图标,选择"管理面板",就能进入脚本管理界面。

注意:有些浏览器可能无法直接访问应用商店,这时候可以考虑从GitHub下载crx文件进行手动安装。不过对于大多数用户来说,直接通过应用商店安装是最简单安全的方式。

1.2 理解油猴脚本的基本结构

油猴脚本本质上是一段JavaScript代码,但它有一个特殊的元数据块(Metadata Block),这个块告诉脚本管理器这个脚本的基本信息。让我们先来看一个最简单的脚本结构:

// ==UserScript==
// @name        我的第一个脚本
// @namespace   http://example.com/
// @version     1.0
// @description 这是一个示例脚本
// @author      你的名字
// @match       https://www.example.com/*
// @grant       none
// ==/UserScript==

(function() {
    'use strict';
    
    // 你的代码从这里开始
    console.log('脚本已加载!');
})();

这个元数据块包含了几个关键信息:

  • @name: 脚本的名称,会显示在脚本管理器中
  • @namespace: 命名空间,通常使用你的域名或邮箱,用于避免脚本名称冲突
  • @match: 指定脚本在哪些网址上运行,支持通配符
  • @grant: 声明脚本需要使用的特殊API权限

在实际开发中,我们还需要了解一些更高级的元数据标签。下面这个表格整理了常用的元数据标签及其用途:

标签 用途 示例
@require 引入外部JavaScript库 @require https://code.jquery.com/jquery-3.6.0.min.js
@resource 引入外部资源文件 @resource icon http://example.com/icon.png
@connect 允许跨域请求的域名 @connect api.weibo.com
@run-at 脚本执行时机 @run-at document-end
@updateURL 脚本更新地址 @updateURL https://example.com/script.meta.js

理解这些元数据标签是编写高质量油猴脚本的第一步。它们不仅决定了脚本的基本行为,也影响了脚本的安全性和兼容性。

1.3 开发工具与调试技巧

油猴脚本的开发不需要复杂的IDE,一个文本编辑器加上浏览器的开发者工具就足够了。但我推荐使用一些专门的工具来提高开发效率。

Visual Studio Code 是我首选的编辑器,它有很好的JavaScript支持,而且可以通过安装扩展来增强油猴脚本的开发体验。我常用的扩展包括:

  • ESLint:代码质量检查
  • Prettier:代码自动格式化
  • UserScript Snippets:油猴脚本代码片段

在调试方面,油猴脚本管理器通常都提供了内置的调试功能。以Tampermonkey为例:

  1. 点击浏览器右上角的Tampermonkey图标
  2. 选择"管理面板"
  3. 找到你的脚本,点击"编辑"
  4. 在编辑器中修改代码后保存
  5. 刷新目标页面即可看到修改效果

更高级的调试可以使用浏览器的开发者工具。在控制台中,你可以直接访问脚本中定义的变量和函数,这对于调试复杂逻辑非常有帮助。

// 在脚本中添加调试输出
console.log('视频URL:', videoUrl);
console.log('按钮元素:', downloadBtn);

// 使用debugger语句设置断点
if (videoUrl) {
    debugger; // 执行到这里时会暂停
    startDownload(videoUrl);
}

2. 微博视频页面结构与分析

2.1 深入理解微博视频页面的DOM结构

要编写一个有效的下载脚本,我们首先需要了解微博视频页面的HTML结构。打开一个微博视频页面(比如 https://weibo.com/tv/v/视频ID),按F12打开开发者工具,让我们一起来探索一下。

微博的视频播放器通常使用HTML5的<video>标签。你可以通过以下方式找到它:

// 方法1:通过标签名查找
const videoElement = document.querySelector('video');

// 方法2:通过类名查找(微博特定的类名可能会变化)
const videoElement = document.querySelector('.weibo-video-player video');

// 方法3:通过属性查找
const videoElement = document.querySelector('[data-node="video"]');

在实际操作中,我发现最可靠的方法是结合多种选择器:

function findVideoElement() {
    // 尝试多种选择器
    const selectors = [
        'video',
        '.weibo-video-player video',
        '.video-player video',
        '[data-node="video"]',
        'div[class*="video"] video'
    ];
    
    for (const selector of selectors) {
        const element = document.querySelector(selector);
        if (element && element.src) {
            return element;
        }
    }
    
    return null;
}

微博页面的DOM结构相对复杂,而且可能会随着版本更新而变化。因此,我们的脚本需要有一定的容错能力。下面这个表格总结了我分析过的几种常见视频页面结构:

页面类型 视频元素位置 特征
单视频页面 通常只有一个video标签 结构简单,容易定位
信息流中的视频 可能有多个video标签 需要根据上下文判断哪个是目标视频
全屏播放模式 video标签可能被动态创建 需要监听DOM变化

2.2 视频URL的获取策略

找到video元素只是第一步,更重要的是获取到视频的真实URL。在微博中,视频URL可能有多种形式:

  1. 直接MP4链接:最理想的情况,可以直接下载
  2. M3U8流媒体:需要特殊处理
  3. 加密或带参数的链接:可能需要额外的处理

让我们写一个函数来获取视频URL:

function getVideoUrl(videoElement) {
    if (!videoElement) {
        console.warn('未找到video元素');
        return null;
    }
    
    // 尝试获取src属性
    let videoUrl = videoElement.src;
    
    // 如果src为空,尝试currentSrc
    if (!videoUrl) {
        videoUrl = videoElement.currentSrc;
    }
    
    // 检查是否是有效的视频URL
    if (videoUrl && isVideoUrl(videoUrl)) {
        return videoUrl;
    }
    
    // 如果以上方法都失败,尝试从子元素中查找
    const sourceElements = videoElement.querySelectorAll('source');
    for (const source of sourceElements) {
        if (source.src && isVideoUrl(source.src)) {
            return source.src;
        }
    }
    
    return null;
}

function isVideoUrl(url) {
    const videoExtensions = ['.mp4', '.webm', '.ogg', '.m3u8'];
    return videoExtensions.some(ext => url.includes(e
weibo-resource-download:微博 [ 图片 | 视频 ] 下载 微博 [ 图片 | 视频 ] 下载 油猴(Tampermonkey)脚本,用于下载微博上的多媒体资源。 支持域名: 微博(weibo.com) 热门微博(d.weibo.com) 微博搜索(s.weibo.com) 此脚本可通过以下链接安装: 此脚本开源,开源地址: 支持资源: 动/静图(9+)、LivePhoto 短视频(秒拍、梨视频、优酷) 暂不支持资源: 直播回放 使用方式: 点击单条微博右侧的“下箭头”,打开操作列表。(如图1) 可一键复制资源地址。(由用户自行使用第三方工具下载,适合大批量多条微博资源下载,如图2) 批量下载指定资源。(逐个下载) 打包下载。(将多份资源装入压缩包中,然后下载) 支持自定义资源文件命名。(详见 附录 - 参数配置) (图1,找到操作列表) (图2,使用第三方工具下载) 附录 - 参数配置 PS:一般修改 resourceName(资源名称)、zip 立即下载

相关推荐

of_graph_get_remote_port

isp { compatible = "isp"; core@0 { id = <0>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; ...

wmzjzwlzs的专栏 1166

合成生物学中试:花钱只是开始,烧钱才是常态

2026年合成生物学行业面临严峻产业化挑战:多家企业终止发酵项目或延期投产,显示从实验室到工厂的转化困境。核心问题并非基因合成成本,而是工艺放大难题——67%项目在中试阶段因工艺问题失败。AI辅助无法替代工程经验,菌株-配方-工艺的三元适配需要长期数据积累。中试成本惊人,涉及设备折旧、原料消耗和稀缺工艺人才,而行业普遍回避讨论这些工程现实,导致认知偏差。建议创业者提前布局中试,将其视为核心竞争力而非简单成本项。合成生物学的真正瓶颈在于工程化能力,这需要时间沉淀而非技术叙事。

AIexander的博客 943

智能座舱测试工程师必看:从零搭建自动化测试框架的5个实战技巧

本文为智能座舱测试工程师提供从零搭建自动化测试框架的5个实战技巧,涵盖环境搭建、ADB高级应用、Python脚本工程化、Monkey测试优化及性能调优。通过ADB深度操作和Python脚本封装,帮助测试人员构建高可复用的智能座舱测试解决方案,显著提升测试效率与问题发现率。

python9snake的博客 637

技术前沿:半导体前道检测和量测设备修复技术

半导体前道检测设备是目前除光刻机外,国产渗透率较低的环节之一,近年来我国初步实现国产突破。前道检测相对后道检测环节壁垒更高,国内多家涉及后道测试,涉及前道检测和中道检测相对较少。

VOMMA的博客 4545

5G物理层基础知识

1、关于RB和RE (1) RB(Resource Block,资源块)频率上连续12个子载波,时域上一个slot(时隙,14个ofdm符号) (2) RE(Resource Element,资源单元)频率上一个子载波,及时域上一个ofdm符号 注意:协议规定,5G每个时隙(非扩展CP)的符号数为14个(扩展CP情况下每个时隙有12个符号),而LTE(非扩展CP)每个时隙的符号数为7个。 简单说:一个12X14的方格,大的整个叫一个RB,每一个小块叫一个RE。另外,一个RE可存放一个调制符号(mo.

qq_39074243的博客 2万+

用Python+Charles搞定小程序付费短剧下载(附完整代码与避坑点)

本文详细介绍了如何利用Python和Charles抓包工具实现小程序付费短剧的自动化下载。通过分析小程序视频接口、破解请求参数,并编写Python脚本,读者可以轻松获取并保存短剧内容。文章还提供了完整的代码示例和常见问题的解决方案,特别适合对视频采集和抓包技术感兴趣的开发者。

weixin_28731231的博客 1192

Unity 多线程编程笔记 _Task详解

士大夫

weixin_43405845的博客 4384

菜鸟哥玩蓝牙Ble4.0系列 ESP32初玩篇③ Beacon —— 广播应用,室内定位,内容推送

文章目录1、前言1.1 什么叫做Beacon?1.2 Beacon使用场景1.3 Beacon协议落地实现2、ESP32 Beacon案例3、Beacon核心库 —— BLEBeacon、BLEEddystoneTLM、BLEEddystoneURL3.1 BLEBeacon3.2 BLEEddystoneTLM3.3 BLEEddystoneURL 授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力。希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石。。。

单片机菜鸟哥的博客 2万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: STM32G0定时器中断实战:HAL库配置TIM2实现LED闪烁(附完整代码)
下一篇: Android Auto开发避坑指南:从零开始构建你的第一个车载应用(2024最新版)
php55
博客等级 码龄15年 51粉丝 1553原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值