Created
April 21, 2024 15:20
-
-
Save yige233/90dd70bb9a8462804435c9e59fb0188d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * https://www.bilibili.com/video/BV12142127je/ | |
| * 通过简单的客户端脚本,来获取自称所谓“被加密”的视频。 | |
| * 这是另一个可供“生成加密链接”的直链视频:https://s1.hdslb.com/bfs/static/player/media/error.mp4 | |
| * @param {*} url 要下载的视频的链接。如果没有提供,会试图获取演示视频url。 | |
| * @param {*} referer 该视频链接对应的referer。默认为www.maidenwork.com | |
| * @returns | |
| */ | |
| async function downloadVideo(url, referer = "www.maidenwork.com") { | |
| const demo = await fetch("https://www.maidenwork.com/", { method: "head" }); //先请求特定url,让服务器记录ip。同时试图获取演示视频url | |
| const videoURL = url || demo.headers.get("src"); | |
| if (!videoURL) { | |
| return console.warn("没有提供视频url,且无法使用默认视频url"); | |
| } | |
| const parsedUrl = new URL(videoURL); | |
| parsedUrl.host = "www.maidenwork.com"; //如果没有www,是跨域请求,而服务端不允许跨域请求带range头 | |
| const res = await fetch(parsedUrl.href, { headers: { range: "", referer } }); //获取视频。提供referer和range(大概是通过有无range判断请求是否来自video标签) | |
| const a = document.createElement("a"); //执行下载操作 | |
| a.href = URL.createObjectURL(await res.blob()); | |
| a.download = "视频.mp4"; | |
| document.body.append(a); | |
| a.click(); | |
| a.remove(); | |
| } | |
| downloadVideo(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment