B站番剧解锁简介

B站作为全球最大的二次元社区之一,以动画、漫画、游戏为主要内容,成为了非常受欢迎的平台之一。然而,由于某些原因,一些番剧作品在国内无法观看。为了解决这个问题,开发者们陆续推出了一些解锁工具。本文将以 B站番剧解锁为中心,从多个方面进行阐述。

一、解锁工具初探

现在,市面上的解锁工具有很多种,其中最为常用的就是 tampermonkey 插件。然而,tampermonkey 功能十分强大,同时也允许用户自定义脚本,使得该插件可以实现更多的功能。不过,在使用 tampermonkey 插件前,需要先了解一些相关的基础知识。

1. tampermonkey 的作用是帮助用户执行指定的 JavaScript 代码,可以修改页面内容、响应网络请求、注入其他 JavaScript 等功能。


// 这是一个例子,可以直接复制到 tampermonkey 中执行
// ==UserScript==
// @name         修改页面标题为 hello world
// @namespace    https://www.example.com/
// @version      0.1
// @description  修改页面标题为 hello world
// @match        https://www.example.com/*
// ==/UserScript==

(function() {
    'use strict';
    document.title = "hello world";
})();

2. 代理是 tampermonkey 支持的另一个重要特性。通过设置代理,可以将 HTTP 请求转发到指定的服务器,实现网络资源的跨域访问。


// 这是一个例子,可以直接复制到 tampermonkey 中执行
// ==UserScript==
// @name         用公共 API 请求一个图片资源
// @namespace    https://www.example.com/
// @version      0.1
// @description  用公共 API 请求一个图片资源
// @match        https://www.example.com/*
// ==/UserScript==

(function() {
    'use strict';
    const xhr = new XMLHttpRequest();
    const url = 'https://www.example.com/img.png';
    xhr.open('GET', url);
    xhr.responseType = 'blob';
    xhr.onload = function() {
        const blob = xhr.response;
        const img = document.createElement('img');
        img.src = URL.createObjectURL(blob);
        document.body.appendChild(img);
    };
    xhr.send();
})();

3. 经典的代理方案是在服务器上设置反向代理服务,然后在 tampermonkey 中设置代理。当然,通过代理服务器还可以实现请求日志、数据抓取等功能。

二、B站番剧解锁实现步骤

当我们对 tampermonkey 有了一定的了解之后,就可以开始编写脚本来实现 B站番剧的解锁了。

1. 查找 API 接口:为了获取番剧的地址,需要先查找 API 接口。在 B站 官网上,我们可以在开发者模式中找到 m.core.js 文件,并对其进行查找。通过搜索关键字,我们可以较快地找到 API 接口地址。


api.bilibili.com/pgc/player/web/playurl?avid=${avid}&cid=${cid}&qn=${quality}&typeflag=pipe&otype=json&ep_id=${ep_id}&fourk=1&fnver=0&fnval=16

该接口地址需要提供一些参数,例如 avid、cid、quality 等。需要注意的是, B站 为了防止盗链,会根据请求头 Referrer 的不同,返回不同的结果。因此,在编写脚本之前,需要先设置正确的请求头信息。


// 设置请求头
GM_xmlhttpRequest({
    method: 'GET',
    url: '',
    headers: {
        'Referer': window.location.href,
        'User-Agent': window.navigator.userAgent,
        'Origin': 'https://www.bilibili.com',
    },

2. 获取地址:根据 API 接口地址获取到地址之后,将地址插入到页面中即可。这里我们可以使用 DOM 操作来实现此功能。

需要注意的是,根据 B站 的视频播放规则,用户必须先点击视频才能获取到地址。因此,我们需要监听页面点击事件,等待用户点击之后再执行地址获取操作。


// 等待用户点击
document.querySelector('.bilibili-player-video').addEventListener('click', async e => {
    // 发起请求,获取视频地址
    const xhr = await GM_xmlhttpRequest({
        method: 'GET',
        url: '',
        headers: {
            'Referer': window.location.href,
            'User-Agent': window.navigator.userAgent,
            'Origin': 'https://www.bilibili.com',
        },
        responseType: 'json'
    });
    const playurl = xhr.response.durl[0].url;

    // 添加到页面中
    const video = document.querySelector('video');
    video.src = playurl;
});

三、总结

本文介绍了通过 tampermonkey 插件来实现 B站番剧的解锁。通过正确设置请求头信息和 API 接口参数,获取到正确的视频地址并插入到页面中,从而实现了番剧的解锁。这里提供一个完整的代码示例,供读者参考。

原创文章,作者:UTJY,如若转载,请注明出处:https://www.506064.com/n/138461.html

(0)
UTJYUTJY
上一篇 2024-10-04
下一篇 2024-10-04

相关推荐

  • Python all函数实现列表元素全为True的判断

    一、Python all函数 Python中的all函数是一个内置函数,主要用于判断一个可迭代对象中的所有元素是否都为True。如果都为True,则返回True;否则,返回Fals…

    编程 2024-10-04
  • c语言编程adc,C语言编程题

    本文目录一览: 1、C语言程序设计, char s[]=“adc\0def” strlen(s)=? sizeo 2、51单片机 C语言ADC程序怎么写 3、51单片机c语言,AD…

    编程 2024-10-04
  • golang开源项目,go 开源项目

    本文目录一览: 1、写小程序,什么语言跨平台兼容和性能较好?golang 2、go语言可以做什么 3、怎么学习golang 4、有哪些不错的golang开源项目 写小程序,什么语言…

    编程 2024-10-03
  • phpforeach语句,phpeach函数

    本文目录一览: 1、php 怎么调用foreach 2、php foreach 循环 3、php foreach 怎么使用条件语句 php 怎么调用foreach foreach …

    编程 2024-10-04
  • 深入了解DatavVue

    作为一款前端可视化开发框架,DatavVue已经成为众多数据可视化开发者的首选。在这篇文章中,我们将深入探讨DatavVue的特性、优势以及使用方法。 一、DatavVue的特性 …

    编程 2024-10-14
  • c语言这个咋整,c语言?怎么用

    本文目录一览: 1、这道C语言怎么做呀? 2、该C语言咋整? 3、C语言 这个怎么做? 4、C语言 这个怎么搞呀? 5、C语言的这个怎么做? 这道C语言怎么做呀? 程序代码是有问题…

    编程 2024-10-14
  • Javascript类详解

    一、基本概念 Javascript是一种基于对象和事件驱动的脚本语言,最初设计用于浏览器端的脚本语言,用于动态增加交互性和用户体验。Javascript类是Javascript中进…

    编程 2024-10-04
  • Python Dask

    在机器学习和数据科学的现代世界中,非常容易找到与众不同的 Python Tools。这些软件包包括 scikit-learn、NumPy 或pands,它们不能根据内存使用或处理时…

  • Python调用基础入门

    引言 Python语言是一种高级编程语言,它简单易学、语法优雅、能够快速开发高效率的应用程序,尤其在数据科学领域异军突起。在使用Python编写应用程序时,会经常用到一些外部库或模…

    编程 2024-10-04
  • 前端获取IP地址全解析

    一、前端获取ip地址 在前后端分离开发的时代,前端需要获取用户的ip地址成为了一个必要的需求。在传统的web开发中,我们可以通过获取HTTP头中的“X-Forwarded-For”…

    编程 2024-10-03

发表回复

登录后才能评论