【工具】JS脚本|浏览器脚本6分钟极速入门 · 开发一个限制自己刷b站的脚本

news2024/11/27 21:02:11

在这里插入图片描述

这张图花里胡哨的是让AI生成的,我觉得怪可爱的,就直接作为封面了。

这篇文章中会开发一个JS脚本,这是一个用来限制b站网页版功能的脚本,避免刷b站的时间过长。功能如下:

  1. 除了搜索、视频页、私信页之外的任何页都会被重定向到搜索页;
  2. 视频页去掉相关推荐,并且非自己的视频去掉评论。

以下内容是视频6分钟极速入门浏览器脚本开发-Bilibili-shandianchengzi的文本。具体要结合视频阅读。

脚本下载链接:https://github.com/shandianchengzi/Bilibili-self-discipline-script/blob/main/README.md。

如果只是使用的话就不用往下看了,直接安装即可。

文章目录

    • 1 脚本创建
    • 2 脚本信息
    • 3 脚本仓库
    • 4 脚本基本开发
    • 5 脚本功能完善

1 脚本创建

想要在浏览器中运行脚本,首先就要在浏览器中下载一个用于管理脚本的扩展插件。我们常用的管理脚本的浏览器插件可以在微软自带的浏览器中直接搜到,你可以在谷歌商店搜到,但是谷歌商店需要科学上网,所以不太合适。

现在微软商店中的tampermonkey被改名为篡改猴。安装好了这个插件之后,就可以看到右上角多了一个图标。如果没有多的话就需要按钉子显示出来。

随后点击这个图标的创建新脚本,他就会生成一个最简脚本模板让你填写了。

2 脚本信息

这个脚本的头部包含一些脚本信息,主要需要修改的就是脚本的介绍、作者信息。我们今天开发的脚本是一个b站自律脚本,它的功能我设计的第一是强制跳转到搜索页,这样就不会看到主页上面的相关视频。第二个功能是视频也去掉相关推荐。并且去掉底下的评论,因为我每次看评论都会看非常久。

可以看到这两个功能都是非常简单的,所以这也是我想把这个脚本作为一个教学脚本的原因。

一个额外需要关注的信息是match,这是指你的脚本在哪一些网页中会加载。比如我们这里是在b站中,所以match就b站就可以。

作为小白需要重点知道的就是通配符*,这个经常写代码的人都知道,意思是后面加任何东西都当作被匹配。

icon就是脚本的图标,随便找张无版权的图片,复制图片链接即可,也可以不修改。

3 脚本仓库

创建好脚本之后,再点开能匹配脚本的页面,就可以看到右上角有小红点,这代表脚本被加载过。

然后继续进一步完善脚本的内容。
我的建议是新建一个github仓库,这样能对脚本进行版本控制,并且开源了别人也能一起帮忙完善。
新建仓库,需要填写名字以及描述,比较特殊的是协议,新人往往不注重协议,但是实际上协议是非常重要的,它直接声明了你的仓库是否对你来说有版权。

比较常用的三种协议有Apache,MIT和GNU。其中阿帕奇允许衍生的产品商用或专有,Mit只保留作者版权,其他的任何使用都不做限制。Gnu就是不允许商用。它做出来的衍生代码必须是继续使用gnu协议、并开源的。

我这里使用的是我比较喜欢的GNU协议,因为我并不希望我这种小破脚本都被拿去商用。对于这种纯粹为了开源和使用而分享出来的脚本被拿去商用对分享者来说是一种非常大的伤害。

创建好仓库之后,把它克隆到本地,再用VScode打开就可以开始我们的编写了。

4 脚本基本开发

对于这种常规脚本,最快的方式还是结合AI,Vscode里有微软开发的Github Copilot,对于学生和老师,只需要在Github上申请即可开通使用,具体申请方式去看Github官网。

装好插件之后,我们输入一些注释,让人工智能自动生成部分代码。它选择先解析网址,我们可以去b站上查找一下这些网址的特征,然后在注释里提供给它,这样它就不会胡乱生成一些解析代码了。

比较容易实现的功能是非视频页重定向,这里强制使窗口链接等于搜索页即可。不过在写的时候会遇到浏览器脚本老生常谈的一个问题,就是脚本加载次数过多。

通过分析浏览器控制台的输出信息,可以知道在每次收到新的xhr请求的时候,都会重新加载一次,说明它主要的加载可能是在子页面。前端的开发者会知道,为了不重复开发一些边框组件,往往开发的时候先做一个框,框里面嵌套子页面,也就是嵌套别的网页文件。

搜索解决办法找到了仅允许顶端加载。这一个设置必须在脚本管理插件中手动添加,脚本的开发开发添加这个设置非常麻烦。你如果你要使用或者自己编写脚本的话,你最好也把这个设置开开,而不是寄希望于开发者。

再次运行的时候现它只加载了一次了。
视频到这里,我们已经完成了最简单的脚本开发,在接下来的视频中,我们会进一步完善整个脚本的功能。

5 脚本功能完善

现在已经完成了功能一,即点击其他页面就重定向到搜索页。功能二稍微复杂一点,需要去掉视频页上的网页元素,并且检验当前视频是否是自己的视频。

首先我们需要先打开一个视频页,方便之后做测试。按F12打开调试工具之后,点击源代码,然后查看我们想删掉的部分的元素信息。

id通常是每个元素的唯一标识符。Class是元素的类,它不是唯一的。如果你要删掉的元素有ID,那么直接使用ID是最简单的,如果是class,你可以找特别一点的class,保证这一种class对应的元素只有一个。

b站这个页面很明显只有这几种元素,所以这个功能很好写,找class还是id都行。

第一,对于右侧的视频推荐,能找到id是reco_list。复制xpath,作为注释,AI就自动生成了代码。
但是使用后发现视频推荐没了,但直播被推送上来了,非常影响观感。所以将display:none改成visibility:hidden,这样只是看不到视频推荐,但是视频推荐仍然会占位置,就不会有直播被推上来了。

第二,对于评论,能找到id是comment,同样,复制xpath作为注释,AI就自动生成了移除代码。

第三,查询当前页面是否是自己的视频。我一开始是使用当前up主的头像链接与右上角的头像链接是否一致,来判断是否是自己。但是发现右上角的头像需要较长的时间才会渲染出来,每次刚点开时,这个元素都是空的,会导致报错。
所以后来改为使用up主头像链接的uid与cookie中保存的DedeUserID作匹配,这样就能检测到是否是自己的视频了。

到这一步,整个脚本就初步编写完成了!
可以看到在自己的视频下有评论区,在别人的视频下没有评论区。并且随便点开一个页面都会自动跳转搜索页。
感谢观看!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1300568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RabbitMQ学习笔记10 综合实战 实现新商家规定时间内上架商品检查

配置文件: 记住添加这个。 加上这段代码,可以自动创建队列和交换机以及绑定关系。 我们看到了我们创建的死信交换机和普通队列。 我们可以看到我们队列下面绑定的交换机。 我们创建一个controller包进行测试: 启动: 过一段时间会变成死信队列…

Multisim电路仿真软件使用教程

安装直接参考这篇文章:Multisim 14.0安装教程 软件管家公众号里有很多软件,需要的可以去找下然后安装,这里用的是14.0版本。 这里有个大神的详细教程,可以参考: Multisim软件使用详细入门教程(图文全解&…

mybatis数据输出-map类型输出

1、建库建表 CREATE DATABASE mybatis-example;USE mybatis-example;create table emp (empNo varchar(40) null,empName varchar(100) null,sal int null,deptno varchar(10) null ); 2、pom.xml <dependencies><dependency><groupId>org…

原来JMeter 分布式执行原理这么简单,为什么没有早点看到呢!

在使用 JMeter 进行性能测试时&#xff0c;如果并发数比较大&#xff08;比如项目需要支持 10000 并发&#xff09;&#xff0c;单台电脑&#xff08;CPU 和内存&#xff09;可能无法支持&#xff0c; 这时可以使用 JMeter 提供的分布式测试的功能&#xff0c;使用多台测试机一…

Python实现FA萤火虫优化算法优化XGBoost分类模型(XGBClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法&#xff08;Fire-fly algorithm&#xff0c;FA&#xff09;由剑桥大学Yang于2009年提出 , …

6.题目:编号2490 小蓝的括号串1

题目: ### 这道题主要考察stack #include<bits/stdc.h> using namespace std; const int N105; stack<char> stk; char s[N]; int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n;cin>>n;cin>>s1;bool anstrue;for(int i1;i<n;i){…

【PWN】学习笔记(二)【栈溢出基础】

课程教学 课程链接&#xff1a;https://www.bilibili.com/video/BV1854y1y7Ro/?vd_source7b06bd7a9dd90c45c5c9c44d12e7b4e6 课程附件&#xff1a; https://pan.baidu.com/s/1vRCd4bMkqnqqY1nT2uhSYw 提取码: 5rx6 C语言函数调用栈 一个栈帧保存的是一个函数的状态信息&…

java--Date、SimpleDateFormat时间类,JDK8之前的

1.Date 代表的是日期和时间 2.SimpleDateFormat 代表简单日期格式化&#xff0c;可以用来把日期对象、时间毫秒值格式化成我们想要的形式。 3.时间格式常见符号 4.SimpleDateFormat解析字符串时间成为日期对象

专业mac投屏软件AirServer v7.2.7 mac中文版

专业mac投屏软件AirServer v7.2.7 mac中文版是一款好用的投屏工具&#xff0c;它可以将您的Mac变成通用镜像接收器&#xff0c;允许您使用内置的AirPlay或基于Google Cast的屏幕投影功能镜像设备的显示器。您可以通过任何AirPlay或Google Cast兼容设备镜像或投射屏幕&#xff0…

C语言精选——选择题Day42

第一题 1. 下面程序输出的结果是&#xff08;&#xff09; #include <stdio.h> int main () {int x;x printf("I See, Sea in C");printf("x%d" , x); } A&#xff1a;2 B&#xff1a;随机值 C&#xff1a;都不是 D&#xff1a;15 答案及解析 D p…

LabVIEW开发新型电化学性能测试设备

LabVIEW开发新型电化学性能测试设备 开发了一种基于Arduino和LabVIEW的新型电化学性能测试装置&#xff0c;专门用于实验电池&#xff0c;特别是在锂硫&#xff08;Li-S&#xff09;技术领域的评估。这种装置结合了简单、灵活的硬件和软件工具&#xff0c;使新科学家能够设计针…

DiffiT

本文首发于AIWalker&#xff0c;欢迎关注。 https://arxiv.org/abs/2312.02139 https://github.com/NVlabs/DiffiT 扩散模型以其强大的表达能力和高样本质量在许多领域得到了新的应用。对于样本生成&#xff0c;这些模型依赖于通过迭代去噪生成图像的去噪神经网络。然而&#x…

每天五分钟计算机视觉:使用1*1卷积层来改变输入层的通道数量

本文重点 在卷积神经网络中有很多重要的卷积核&#xff0c;比如1*1的卷积核&#xff0c;3*3的卷积核&#xff0c;本文将讲解1*1的卷积核的使用&#xff0c;它在卷积神经网络中具有重要的地位。由于1*1的卷积核使用了最小的窗口&#xff0c;那么1*1的卷积核就失去了卷积层可以识…

Redis 持久化 —— 超详细操作演示!

四、Redis 持久化 四、Redis 持久化4.1 持久化基本原理4.2 RDB持久化4.3 AOF持久化4.4 RDB与AOF对比4.5 持久化技术转型 五、Redis 主从集群六、Redis 分布式系统七、Redis 缓存八、Lua脚本详解九、分布式锁 数据库系列文章&#xff1a; 关系型数据库: MySQL —— 基础语法大全…

leetcode 100.相同的树

涉及到递归&#xff0c;最好多画图理解&#xff0c;希望对你们有帮助 100.相同的树 题目 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 题目链接…

2023-12-05 Qt学习总结6

点击 <C 语言编程核心突破> 快速C语言入门 Qt学习总结 前言十八 QMessageBox消息对话框十九 Qt布局管理总结 前言 要解决问题: 学习qt最核心知识, 多一个都不学. 十八 QMessageBox消息对话框 QMessageBox消息对话框是Qt中的一个提供用户交互界面的对话框窗口。 它通常…

perl处理base64、md5、SHA-1、SHA-256的计算

使用perl可以进行base64、md5、SHA-1、SHA-256的计算&#xff0c;使用也非常方便&#xff0c;下面是示例代码&#xff1a; #! /usr/bin/perl use v5.14; use MIME::Base64; use Digest;my $test_str hello world;# 测试base64 say encode_base64($test_str);# 测试md5 my $md…

kafka入门(四):消费者

消费者 (Consumer ) 消费者 订阅 Kafka 中的主题 (Topic) &#xff0c;并 拉取消息。 消费者群组&#xff08; Consumer Group&#xff09; 每一个消费者都有一个对应的 消费者群组。 一个群组里的消费者订阅的是同一个主题&#xff0c;每个消费者接收主题的一部分分区的消息…

STM32-TIM定时器输出比较

目录 一、输出比较简介 二、PWM简介 三、输出比较通道&#xff08;通用&#xff09; 四、输出比较通道&#xff08;高级&#xff09; 五、输出比较模式 六、PWM基本结构 七、PWM参数计算 八、外设介绍 8.1 舵机 8.2 直流电机及驱动 九、开发步骤 十、输出比较库函数…

TCP数据粘包的处理

TCP数据粘包的处理 背锅侠TCP解决方案2.1 发送端2.2 接收端 背锅侠TCP 在前面介绍套接字通信的时候说到了TCP是传输层协议&#xff0c;它是一个面向连接的、安全的、流式传输协议。因为数据的传输是基于流的所以发送端和接收端每次处理的数据的量&#xff0c;处理数据的频率可…