node.js|浏览器插件|Open-Multiple-URLs的部署和使用,实现一键打开多个URL的强大工具

前言:

在整理各类资源的时候,可能会面临资源非常多的情况,这个时候我们就需要一款能够一键打开多个URL的浏览器插件了

说简单点,其实,迅雷就是这样的,但是迅雷是基于内置nginx浏览器实现的,并且一次打开的数量是有限制的,好像是会员只能一次性打开50个URL

当然了,除了迅雷,其实其它各类资源都有各种各样的限制,这些无疑是极大的降低了我们的资料整理效率,而如果使用Open-Multiple-URLs这样的浏览器插件,将会很容易的突破每次打开URL数量的限制(不管有没有验证码这样的安全类措施,我就问是不是突破了多开URL的限制,虽然还有验证码等等需要去处理,但效率是不是已经有所提升?)

下面是Google浏览器使用Open-Multiple-URLs

输入框可以黏贴很多很多URL,当然前提是你的机器足够强悍,我的i713代cpu大概应该可以打开200多个URL,到底多少没有测算,不过和自身机器的cpu,内存是有关系这个是一定的

那么,如何安装这个插件呢?

下面将就这个问题做一个简单的描述

一、

Open-Multiple-URLs的源码下载

https://github.com/htrinter/Open-Multiple-URLs

这里需要注意,该项目是js项目,因此,源码编译需要node和npm(npm是node的包管理器,应该是类似python和pip的关系)

在github上面的项目主页上,显示编译需要node版本大于18,因此,该项目的源码编译是有一定的难度的,后面我将会讲到这个问题

二、

Open-Multiple-URLs编译环境的处理

前面提到了Open-Multiple-URLs的编译需要node版本大于18,而node安装yum并没有高于18版本的,因此,需要源码编译node,但这里是有一个巨大的坑的,那就是npm需要高版本的glibc库以及gcc库和高版本python环境,这个就非常困难了

因此,稍作总结,Open-Multiple-URLs编译需要高版本python,至少是3.6版本;高版本的glibc,至少2.23版本;高版本的gcc编译器,至少是gcc9

🆗,gcc9这个是最好处理的,只需要使用gcc的开发包就可以了,因此,安装devtoolset-9这个就可以了,rpm或者yum随便什么形式都可以,安装完devtoolset-9后,激活一下gcc的变量就可以了

python版本和node的对应关系大概是

python3.6-----node18---glibc2.17

python3.8-----node19---glibc2.23

python3.11----node22---glibc2.28

🆗,仅仅是编译一个Open-Multiple-URLs,因此,我选择python3.6-----node18---glibc2.17这个编译路线,python3.6可以使用yum安装,这个比较简单,yum源配置好就可以了

glibc也可以使用yum源,配置好相应的yum源安装就完事了,glibc选择使用2.17版本就可以了,当然也可以用高一点的,这个无所谓

要求glibc版本不低于2.22,但是不宜安装过高版本的glibc,因为较高版本的glibc依赖于python,去整python环境又得费一番功夫,所以弄个比2.22稍高一点的2.23版就够了

glibc下载地址:http://ftp.gnu.org/gnu/glibc/glibc-2.23.tar.gz

下载完毕后,将该文件上传到服务器并解压,解压后进入解压目录,执行以下命令开始编译,但编译前最好使用高版本的gcc,例如gcc9

[root@centos10 glibc-2.23]# mkdir build
[root@centos10 glibc-2.23]# cd build/
[root@centos10 build]# pwd
/root/glibc-2.23/build
 
 
 
 
../configure --prefix=/usr --disable-werror
make 
make install
@@@###最终编译成功的最后日志如下:
LD_SO=ld-linux-x86-64.so.2 CC="gcc" /usr/bin/perl scripts/test-installation.pl /root/glibc-2.23/build/
Your new glibc installation seems to be ok.
make[1]: Leaving directory `/root/glibc-2.23'
[root@centos10 build]# echo $?
0

中间有两个报错,第一个是这个报错(../configure --prefix=/usr --disable-werror的时候报的这个哦):

 Error: `loc1@GLIBC_2.2.5' can't be versioned to common symbol 'loc1'
 Error: `loc2@GLIBC_2.2.5' can't be versioned to common symbol 'loc2'
 Error: `locs@GLIBC_2.2.5' can't be versioned to common symbol 'locs'
解决方案为:

vim  ../misc/regexp.c
 
 
char *loc1 __attribute__ ((nocommon));
char *loc2 __attribute__ ((nocommon));
compat_symbol (libc, loc1, loc1, GLIBC_2_0);
compat_symbol (libc, loc2, loc2, GLIBC_2_0);
 
/* Although we do not support the use we define this variable as well.  */
char *locs __attribute__ ((nocommon));
 
 
loc1,loc2,locs 后面添加__attribute__ ((nocommon))
 第二个是make install的时候报错(等make这个命令 执行完了,在执行下面这个解决方案,如果不执行下面的解决方案就是下面这个错了!!!!~~~~~~~,make的时间比较长,耐心等待哦):

gawk '/\.gnu\.glibc-stub\./ { \
      sub(/\.gnu\.glibc-stub\./, "", $2); \
      stubs[$2] = 1; } \
    END { for (s in stubs) print "#define __stub_" s }' > /opt/glibc-2.23/build/math/stubsT
gawk: error while loading shared libraries: /lib64/libm.so.6: invalid ELF header
make[2]: *** [/opt/glibc-2.23/build/math/stubs] Error 127
解决方案为:

cd /lib64
 
###确认一下是否确实make出来了libm-2.23.so
[root@centos10 build]# ls -al /lib64/libm-2.23.so 
-rwxr-xr-x 1 root root 4218304 Feb 16 23:50 /lib64/libm-2.23.so
###绝对路径 强制链接
[root@centos10 build]# ln -sf /lib64/libm-2.23.so  /lib64/libm.so.6
最终编译成功,成功的日志末尾如下:

LD_SO=ld-linux-x86-64.so.2 CC="gcc" /usr/bin/perl scripts/test-installation.pl /root/glibc-2.23/build/
Your new glibc installation seems to be ok.
make[1]: Leaving directory `/root/glibc-2.23'
[root@centos10 build]# echo $?
0


 

等node和npm编译完成后,命令输出两者的版本,如果正常输出,表示环境准备完毕:

[root@centos1 Open-Multiple-URLs-develop]# npm -v
8.8.0
[root@centos1 Open-Multiple-URLs-develop]# node -v
v18.1.0

如果有任何报错,那么,表示编译不成功,需要找到原因,重新编译node 

假设打印node版本的时候。报错Error: /lib64/libstdc++.so.6: version `CXXABI_1.3.9‘ not found,这个时候,先把glibc高版本编译完成后,按如下解决:

更新libstdc++.so.6.0.26
依次执行以下命令,下载新lib库文件,拷贝到报错的目录,当前目录做强制链接

 
wget https://cdn.frostbelt.cn/software/libstdc%2B%2B.so.6.0.26
cp libstdc++.so.6.0.26 /usr/lib64/
cd /usr/lib64/
ln -snf ./libstdc++.so.6.0.26 libstdc++.so.6

二、

Open-Multiple-URLs的编译

以上都准备好后,就非常简单了,把Open-Multiple-URLs的源码放到服务器上解压后,进入解压目录后

先将npm的源更换为国内的淘宝源,并稍作验证:

npm config set registry https://registry.npmmirror.com/

验证:

输出为淘宝源即可

[root@centos1 ~]# npm config get registry
https://registry.npmmirror.com/

开始编译:

npm run build:all

输出如下:

> open-multiple-urls@1.6.0 build:all
> npm run build:chrome && npm run build:firefox


> open-multiple-urls@1.6.0 build:chrome
> export TARGET=chrome && run-p type-check "build {@}" --


> open-multiple-urls@1.6.0 type-check
> vue-tsc --noEmit -p tsconfig.vitest.json --composite false


> open-multiple-urls@1.6.0 build
> vite build --sourcemap true

vite v4.5.2 building for production...
✓ 31 modules transformed.
dist-chrome/lazyloading.html                                0.56 kB │ gzip:  0.34 kB
dist-chrome/browseraction.html                              0.64 kB │ gzip:  0.37 kB
dist-chrome/assets/browseraction-c92649d4.css               0.91 kB │ gzip:  0.46 kB
dist-chrome/assets/LazyLoading-c0cd47d9.js                  0.86 kB │ gzip:  0.49 kB │ map:   1.33 kB
dist-chrome/assets/_plugin-vue_export-helper-8461c927.js    1.54 kB │ gzip:  0.65 kB │ map:   0.17 kB
dist-chrome/assets/BrowserAction-4e465abe.js               13.22 kB │ gzip:  3.20 kB │ map:  17.70 kB
dist-chrome/assets/vendor-e74b1f13.js                     178.56 kB │ gzip: 38.47 kB │ map: 511.31 kB
[vite-plugin-static-copy] Copied 4 items.
✓ built in 1.31s

> open-multiple-urls@1.6.0 build:firefox
> export TARGET=firefox && run-p type-check "build {@}" --


> open-multiple-urls@1.6.0 type-check
> vue-tsc --noEmit -p tsconfig.vitest.json --composite false


> open-multiple-urls@1.6.0 build
> vite build --sourcemap true

vite v4.5.2 building for production...
✓ 31 modules transformed.
dist-firefox/lazyloading.html                                0.56 kB │ gzip:  0.34 kB
dist-firefox/browseraction.html                              0.64 kB │ gzip:  0.37 kB
dist-firefox/assets/browseraction-c92649d4.css               0.91 kB │ gzip:  0.46 kB
dist-firefox/assets/LazyLoading-c0cd47d9.js                  0.86 kB │ gzip:  0.49 kB │ map:   1.33 kB
dist-firefox/assets/_plugin-vue_export-helper-8461c927.js    1.54 kB │ gzip:  0.65 kB │ map:   0.17 kB
dist-firefox/assets/BrowserAction-4e465abe.js               13.22 kB │ gzip:  3.20 kB │ map:  17.70 kB
dist-firefox/assets/vendor-e74b1f13.js                     178.56 kB │ gzip: 38.47 kB │ map: 511.31 kB
[vite-plugin-static-copy] Copied 4 items.
✓ built in 1.23s

此时,当前目录下会编译产出两个文件夹,这两个文件夹,一个是火狐的插件,一个是chrome谷歌的插件,谷歌的插件可以用于QQ浏览器这样的chrome内核类型的浏览器

[root@centos1 Open-Multiple-URLs-develop]# ls -alh dist-*
dist-chrome:
total 48K
drwxr-xr-x 3 root root  164 Jan  5 05:28 .
drwxr-xr-x 7 root root 4.0K Jan  5 03:16 ..
drwxr-xr-x 2 root root  326 Jan  5 05:28 assets
-rw-r--r-- 1 root root  639 Jan  5 05:28 browseraction.html
-rw-r--r-- 1 root root  14K Jan  5 05:28 icon128.png
-rw-r--r-- 1 root root 1.9K Jan  5 05:28 icon16.png
-rw-r--r-- 1 root root 2.0K Jan  5 05:28 icon19.png
-rw-r--r-- 1 root root 4.4K Jan  5 05:28 icon48.png
-rw-r--r-- 1 root root  557 Jan  5 05:28 lazyloading.html
-rw-r--r-- 1 root root  509 Jan  5 05:28 manifest.json

dist-firefox:
total 48K
drwxr-xr-x 3 root root  164 Jan  5 05:28 .
drwxr-xr-x 7 root root 4.0K Jan  5 03:16 ..
drwxr-xr-x 2 root root  326 Jan  5 05:28 assets
-rw-r--r-- 1 root root  639 Jan  5 05:28 browseraction.html
-rw-r--r-- 1 root root  14K Jan  5 05:28 icon128.png
-rw-r--r-- 1 root root 1.9K Jan  5 05:28 icon16.png
-rw-r--r-- 1 root root 2.0K Jan  5 05:28 icon19.png
-rw-r--r-- 1 root root 4.4K Jan  5 05:28 icon48.png
-rw-r--r-- 1 root root  557 Jan  5 05:28 lazyloading.html
-rw-r--r-- 1 root root  442 Jan  5 05:28 manifest.json

将以上两个文件夹传到服务器外,在Windows环境下就可以导入浏览器插件使用了

三、

浏览器插件的配置

查看浏览器版本

 找到浏览器的插件管理

必须进入开发者模式

 

现在就可以愉快的使用此插件了

附录:

本次编译所使用的源码包,主要包括Open-Multiple-URLs源码,node三个版本,glibc的两个版本,以及编译生成的可用的火狐和chrome浏览器插件,如果有不想编译的同学,自己取用!!!!

编译工作成功在centos7 x86_64服务器下通过!!!!!!!!!!

通过网盘分享的文件:浏览器插件Open-Multiple-URLs
链接: https://pan.baidu.com/s/1Z28J4Mbqf8ieaf25xVvQ-Q?pwd=nze4 提取码: nze4 
--来自百度网盘超级会员v6的分享

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTML 显示器纯色亮点检测工具

HTML 显示器纯色亮点检测工具 相关资源文件已经打包成html等文件,可双击直接运行程序,且文章末尾已附上相关源码,以供大家学习交流,博主主页还有更多Html相关程序案例,秉着开源精神的想法,望大家喜欢&#…

dbeaver导入导出数据库(sql文件形式)

目录 前言dbeaver导出数据库dbeaver导入数据库 前言 有时候我们需要复制一份数据库,可以使用dbeaver简单操作! dbeaver导出数据库 选中数据库右键->工具->转储数据库 dbeaver导入数据库 选中数据库右键->工具->执行脚本 mysql 默…

接口测试-postman(使用postman测试接口笔记)

一、设置全局变量 1. 点击右上角设置按钮-》打开管理环境窗口-》选择”全局“-》设置变量名称,初始值和当前值设置一样的,放host放拼接的url,key放鉴权那一串字符,然后保存-》去使用全局变量,用{{变量名称}}形式 二、…

enzymejest TDD与BDD开发实战

一、前端自动化测试需要测什么 1. 函数的执行逻辑,对于给定的输入,输出是否符合预期。 2. 用户行为的响应逻辑。 - 对于单元测试而言,测试粒度较细,需要测试内部状态的变更与相应函数是否成功被调用。 - 对于集成测试而言&a…

Flutter项目开发模版,开箱即用(Plus版本)

前言 当前案例 Flutter SDK版本:3.22.2 本文,是由这两篇文章 结合产出,所以非常建议大家,先看完这两篇: Flutter项目开发模版: 主要内容:MVVM设计模式及内存泄漏处理,涉及Model、…

Spring Boot - 日志功能深度解析与实践指南

文章目录 概述1. Spring Boot 日志功能概述2. 默认日志框架:LogbackLogback 的核心组件Logback 的配置文件 3. 日志级别及其配置配置日志级别3.1 配置文件3.2 环境变量3.3 命令行参数 4. 日志格式自定义自定义日志格式 5. 日志文件输出6. 日志归档与清理7. 自定义日…

IWOA-GRU和GRU时间序列预测(改进的鲸鱼算法优化门控循环单元)

时序预测 | MATLAB实现IWOA-GRU和GRU时间序列预测(改进的鲸鱼算法优化门控循环单元) 目录 时序预测 | MATLAB实现IWOA-GRU和GRU时间序列预测(改进的鲸鱼算法优化门控循环单元)预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现IWOA-GRU和GRU时间序列预测…

【SpringBoot】日志处理-异常日志(Logback)

文章目录 异常日志(Logback)1、将 logback-spring.xml 文件放入项目的 src/main/resources 目录下2、配置 application.yml 文件3、使用 Logback 记录日志 异常日志(Logback) 使用 Logback 作为日志框架时,可以通过配…

【RK3568笔记】Android修改开机动画

概述 Android 的开机动画是由一系列连续的 PNG 图片作为帧组成的动画形式,不是一张 GIF 图片。将各帧 PNG 图片以压缩方式进行保存(压缩方式要求是存储压缩),并将保存的文件名命名为 bootanimation.zip,这个 bootanim…

复合机器人助力手机壳cnc加工向自动化升级

在当今竞争激烈的制造业领域,如何提高生产效率、降低成本、提升产品质量,成为众多企业面临的关键挑战。尤其是在手机壳 CNC 加工这一细分行业,随着市场需求的持续增长,对生产效能的要求愈发严苛。而复合机器人的出现,正…

HTML——75. 内联框架

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>内联框架</title><style type"text/css">iframe{width: 100%;height: 500px;}</style></head><body><!--iframe元素会创建包含…

(七)人工智能进阶之人脸识别:从刷脸支付到智能安防的奥秘,小白都可以入手的MTCNN+Arcface网络

零、开篇趣谈 还记得第一次用支付宝"刷脸"时的新奇感吗&#xff1f;或者被抖音的人脸特效逗乐的瞬间&#xff1f;这些有趣的应用背后&#xff0c;其实藏着一个精妙的AI世界。今天&#xff0c;就让我们开启一段奇妙的人脸识别技术探索之旅吧&#xff01; 一、人脸识…

1. 使用springboot做一个音乐播放器软件项目【前期规划】

背景&#xff1a; 现在大部分音乐软件都是要冲会员才可以无限常听的。对于喜欢听音乐的小伙伴&#xff0c;资金又比较紧张&#xff0c;是那么的不友好。作为程序员的我&#xff0c;也是喜欢听着歌&#xff0c;敲着代码。 最近就想做一个音乐播放器的软件&#xff0c;在内网中使…

STM32-笔记37-吸烟室管控系统项目

一、项目需求 1. 使用 mq-2 获取环境烟雾值&#xff0c;并显示在 LCD1602 上&#xff1b; 2. 按键修改阈值&#xff0c;并显示在 LCD1602 上&#xff1b; 3. 烟雾值超过阈值时&#xff0c;蜂鸣器长响&#xff0c;风扇打开&#xff1b;烟雾值小于阈值时&#xff0c;蜂鸣器不响…

【Linux】记录一下考RHCE的学习过程(七)

年底了&#xff0c;公司接的北京地铁轨道交通的项目做不完了&#xff0c;一百多列地铁的设备都得调&#xff0c;派我出差了几周&#xff0c;这几天才回来&#xff0c;出差累死了实在是没办法更新。&#xff08;YOASOBI的二开票还没抢到ToT&#xff0c;哭死&#xff0c;看看回滚…

[读书日志]从零开始学习Chisel 第六篇:Scala面向对象编程——特质(敏捷硬件开发语言Chisel与数字系统设计)

3.4特质 3.4.1什么是特质 特质使用trait开头&#xff0c;它与单例对象很像&#xff0c;两者都不能有输入参数&#xff0c;但单例对象是具体的&#xff0c;特质是抽象的。两者都不能用new实例化&#xff0c;类&#xff0c;单例对象&#xff0c;特质三者内部都可以包含字段和方…

VuePress2配置unocss的闭坑指南

文章目录 1. 安装依赖&#xff1a;准备魔法材料2. 检查依赖版本一定要一致&#xff1a;确保魔法配方准确无误3. 新建uno.config.js&#xff1a;编写咒语书4. 配置config.js和client.js&#xff1a;完成仪式 1. 安装依赖&#xff1a;准备魔法材料 在开始我们的前端魔法之前&…

游戏引擎学习第77天

仓库: https://gitee.com/mrxiao_com/2d_game 回顾昨天的 bug 今天我们继续开发进度&#xff0c;进行调试昨天代码的问题&#xff0c;主要是关于如何跟踪玩家和敌人在世界中的高度位置。虽然我们做的是一款 2D 游戏&#xff0c;但我们希望能够处理多层的房间&#xff0c;玩家…

uniapp结合movable-area与movable-view实现拖拽功能2

前言 上篇我们写了&#xff0c;固定高度的拖拽&#xff0c;这篇我们将进行不固定高度的拖拽模块编写完成。 开始 一、初始化 我们在list数组里面增加一个data的动态数组&#xff0c;这样可以动态改变元素的高度。 当前元素y 上一个元素的高度 <template><view s…

ubuntu为Docker配置代理

终端代理 我们平常在ubuntu终端中使用curl或git命令时&#xff0c;往往会很慢。 所以&#xff0c;首先需要给ubuntu终端环境添加代理。 查看自身那个软件的端口号&#xff0c;我这里是7890。 sudo gedit ~/.bashrcexport http_proxyhttp://localhost:7890 export https_pr…