庆余年2火了,却把热爱开源的程序员给坑了

庆余年 2 终于开播了,作为一名剧粉,苦等了五年终于盼来了。开播即爆火,虽然首播的几集剧情有些拖沓,不过也不影响这是一部好剧。

然而,庆余年 2 的爆火,却把 npmmirror 镜像站给坑惨了。npmmirror 镜像站(原 CNPM)的核心开发者 fengmk2 在某社交平台发推说,有人利用了 npm 包的机制,将刚刚开播的《庆余年 2》盗版资源搬运到了 npmmirror,因此导致 npmmirror 使用了大量的阿里云 CDN 资源,这个月开发者要因此付出很多的 CDN 账单费用了。

有些人就要问了,为什么看个盗版视频,会影响到这个很多人没听过名字的网站呢?

那一切的源头就要从 npm 说起了,了不起这就给大家简单科普一下。

何为 npm

npm(Node Package Manager)是一个 JavaScript 编程语言的包管理器,npm 允许开发者安装、共享和管理具有依赖关系的 JavaScript 包,这些包可以是库、工具或框架。而 npm 提供了一个公共的包仓库(registry),开发者可以在这里发布自己的包,也可以搜索和下载其他人发布的包。

图中说的 Unpkg,则是一个快速的 CDN 服务,用于提供 npm 包的内容。它允许开发者通过 URL 访问 npm 仓库中的文件,而不需要下载整个包。其优势在于它提供了一个快速、可靠的方式来分发 npm 包,并且可以自动处理缓存和版本控制。这对于前端开发者来说是一个非常方便的工具。

而 npmmirror 是一个中国的 npm 镜像服务,它提供了 npm 官方仓库的镜像,以加速中国大陆地区开发者访问 npm 仓库的速度。由于网络原因,中国大陆的开发者在访问 npm 官方仓库时可能会遇到速度慢或连接不稳定的问题。npmmirror 通过在中国大陆设立服务器,缓存 npm 官方仓库的数据,从而提供更快的访问速度。

盗版视频如何影响到 npm

当然,npm 和 Unpkg 都是免费的。而盗版视频的团队却盯上了这个免费快速的分发机制,通过将视频文件分割成多个小体积的视频文件,并对格式进行伪装,上传到 npm。而他们搭建的盗版视频网站则以软件包的方式从 npm 中获取这一批小视频文件,进而实现盗版网站的在线播放。

因为 npmmirror 是 npm 的镜像服务,所以国内的盗版视频网站在播放视频时,自然是走了 npmmirror 提供的 CDN 服务,从而达到了免费快速加载视频的。

本来是一群热爱开源的开发者给大家提供便利的 npmmirror,却被灰产团队利用,遭到了巨大的损失。了不起也惊叹到还可以这样使用公共资源为自己谋取私利,灰产团队的小聪明用到了这种歪路上,实在是可恶。

后续的处理

npmmirror 第一时间关闭了 unpkg 的新增文件功能紧急止损,并于第二天新增了白名单的判断,尽量的减少对其他开发者使用的影响。

了不起说

讲道理,这件事真是有些让人气愤。

开源社区和公共基础设施的建立是为了促进技术的发展和知识的共享,它们是无数开发者辛勤工作和智慧的结晶。当这些宝贵的资源被滥用,不仅损害了版权所有者的合法权益,也破坏了社区的和谐与信任。

而对于那些坚守原则、维护正义的开发者和组织,正是因为有了你们,开源社区才能持续繁荣发展,成为推动技术进步的重要力量。

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

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

相关文章

gem5模拟器入门(二)——创建一个简单的配置脚本

本章教程将引导您设置一个简单的 gem5 仿真脚本,并首次运行 gem5。假设您已经完成了gem5模拟器入门(一)——环境配置-CSDN博客,并成功构建了带有可执行文件 build/X86/gem5.opt 的 gem5。 配置脚本将模拟一个非常简单的系统&#…

在PYTHON程序中利用FFmpeg录屏真的很好用

FFmpeg是一个开源的跨平台音视频处理工具,拥有强大的音视频编解码能力和丰富的处理功能。它支持包括视频、音频在内的多媒体数据的转换、编辑、播放等操作,被广泛应用于音视频领域的编解码、转码、流媒体处理等方面。 以下是FFmpeg的一些主要特点和功能…

LangChain实战 | 3分钟学会SequentialChain怎么传多个参数

SequentialChain参数传递,总结了以下四种类型 参数传递入参出参一 对 一11一 对 多1n多 对 一n1多 对 多nn 0.连接大模型 先选一个llm,参考这篇博客选择一个国内大模型 LangChain连接国内大模型测试|智谱ai、讯飞星火、通义千问 from langchain_comm…

网络侦察技术

网络侦察技术 收集的信息网络侦察步骤搜索引擎检索命令bing搜索引擎Baidu搜索引擎Shodan钟馗之眼(zoomeye) whois数据库:信息宝库查询注册资料 域名系统网络拓扑社交网络跨域拓展攻击 其它侦察手段社会工程学社会工程学常见形式Web网站查询 其它非技术侦察手段总结网…

巅峰对决:OpenAI与Google如何用大模型开创未来

2024年,人工智能领域正引领着一场波澜壮阔的全球技术革命。 5月14日,OpenAI揭开了其新一代多模态人工智能大模型GPT4系列的神秘面纱,其中GPT-4o不仅拥有流畅迷人的嗓音,还展现出幽默、机智和深刻的洞察力……紧接着,在…

linux下cp和mv命令显示进度条

1.查看当前系统下coreutils工具包的版本号: [rootk8s-master ~]# rpm -qa | grep -w coreutils coreutils-8.22-24.el7_9.2.x86_64当前版本为8.22。 因为cp 和 mv 命令由 coreutils 软件包提供,所以需要重新下载 coreutils 软件包配置补丁 2.下载core…

数据结构——顺序表基本操作的实现(初始化、取值、查找、插入)

一、线性表与顺序表的概述 线性表的数据元素的逻辑特征是线性的,是一种典型的线性结构。这样的结构可以借鉴数组,如数组a[10]中,a[1]前一定是a[0],a[1]后一定是a[2],首结点(a[0])前面无元素&am…

java医院管理系统源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的医院管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 医院管理系统的主要使用者分…

VR法治教育展厅互动体验突破了地域限制

VR全景互动展厅搭建编辑器以其卓越的特点、强大的功能及实际应用中的显著优势,成为企业级VR应用的得力助手。这款软件不仅能够制作逼真的虚拟场景,更能让用户沉浸其中,体验前所未有的真实感。 它拥有高度逼真的视觉效果,采用先进的…

智能单款计划助力品牌利润增长

零售品牌若要在激烈的市场竞争中胜出,季中单款的管理无疑是商品生命周期管理的核心环节之一。而单款计划的制定,首先依赖于对爆款、平销及滞销产品的敏锐洞察。一个利润现象不得不引起我们的关注:爆款产品的销售,往往成为拉动品牌…

svix - webhooks

文章目录 一、关于 SvixClient Library Overview与 Svix 托管服务的区别 二、运行服务器1、部署1.1 Docker1) 使用 Docker Compose2) 独立容器 1.2 预编译的二进制文件1.3 从源代码构建 2、运行时依赖项3、Redis/Valkey 注意事项持久性 Eviction 政策4、服务器配置4.1 配置文件…

express.js--生成token(二)

主要作用是访问路由接口时,生成身份权限信息 下载依赖 npm i express-jwt npm i jsonwebtoken 配置管理 config/index.js module.exports {app: {port: process.PORT || 3000,//jwt密钥jwtSecret: jwtSecret,//token过期时间expiresIn: 60 * 60 * 24,} } con…

从零开始:如何集成美颜SDK和优化美颜接口

今天,小编将从零开始,详细讲解如何集成SDK并优化美颜接口。 一、选择合适的美颜SDK 评估SDK的功能 在评估过程中,可以通过阅读官方文档、查看示例代码以及实际测试来确定SDK是否符合需求。 兼容性和性能 确保其支持你开发的应用平台&…

【代码随想录算法训练营第37期 第二十一天 | LeetCode530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先】

代码随想录算法训练营第37期 第二十一天 | LeetCode530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先 一、530.二叉搜索树的最小绝对差 解题代码C: /*** Definition for a binary tree node.* struct TreeNode {* int val;* …

【网络】高级IO(select||poll||epoll)

基础引入 应用层read&&write的时候,把数据从用户层写到操作系统,本质是拷贝函数。read时候如果缓冲区没有数据,那么就要等待数据才能读取,因此IO等待拷贝,要进行拷贝,必须等待读写事件就绪。高效I…

成长之路Flutter中的TextField组件

TextField组件本身具备多种属性,支持很多参数设置来实现不同样式效果。 TextField组件可直接上手使用,但默认样式和输入规则并不一定是需求开发中想要的(实话说默认样式并不好看)。下面就通过Flutter TextField组件属性介绍来自定…

Android15 Beta更新速览

Android15 Beta更新速览 前台服务变更 前台服务使应用保持活动状态,以便它们可以执行关键且对用户可见的操作,通常以牺牲电池寿命为代价。在 Android 15 Beta 2 中,dataSync 和 mediaProcessing 前台服务类型现在具有约 6 小时的超时时间&a…

青春旅行家:大学生旅游创业的新星

在青春的岁月里,我们怀揣着梦想,渴望探索世界的每一个角落。对于普通高校的大学生而言,毕业季不仅是人生中的一次重要转折,更是实现梦想、放飞自我的绝佳时机。在这个特殊的时刻,一群年轻的大学生创业者凭借他们的智慧…

内网安全--隧道技术-CS上线本地

免责声明:本文仅做技术交流与学习...请勿非法搞破坏... ---隧道技术:硬刚网络协议,(你不让我走我偏走!) 解决不出网协议上线的问题(利用出网协议进行封装出网) 代理协议: SOCKS4/5 代理软件: SocksCap Proxifier ProxyChains(…

YOLOv8改进 | 融合模块 | 用Resblock+CBAM卷积替换Conv【轻量化网络】

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 在目标检测领域内,尽管YOLO系列的算法傲视群雄,但在某些方面仍然存在改进的空间。在YOLOv8提取特征的时候,由于卷积的缘故,会导致很多信息的丢失。而凯明大神的神作resnet可以减少信息的丢失。本文给大家带…