Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从URL下载视频,无需在chrome浏览器中打开_Javascript_Google Chrome_Download_Console_Html5 Video - Fatal编程技术网

Javascript 从URL下载视频,无需在chrome浏览器中打开

Javascript 从URL下载视频,无需在chrome浏览器中打开,javascript,google-chrome,download,console,html5-video,Javascript,Google Chrome,Download,Console,Html5 Video,我注册了一门课程,大约有150个视频 我现在所做的一切: 目前没有可用的下载按钮。 为了获得每个视频文件的URL,我创建了脚本,通过控制台运行,如下所示: 我观看这些视频的网站与xxxxx标记的网站不同。 e、 我在linkedin上看学习视频,在lynda上看视频等等 console.log(“+document.title)+” + ""); document.getElementsByClassName(“视频下一步按钮”)[0]。单击(); 上述代码的输出示例如下: <h2>

我注册了一门课程,大约有150个视频

我现在所做的一切:

目前没有可用的下载按钮。 为了获得每个视频文件的URL,我创建了脚本,通过控制台运行,如下所示:

我观看这些视频的网站与xxxxx标记的网站不同。 e、 我在linkedin上看学习视频,在lynda上看视频等等

console.log(“+document.title)+”
+
"");
document.getElementsByClassName(“视频下一步按钮”)[0]。单击();
上述代码的输出示例如下:

<h2>Overview of QGIS features: Learning QGIS (2015)</h2>
<a href="https://files3.xxxxx.com/secure/courses/383524/VBR_MP4h264_main_SD/383524_01_01_XR15_Overview.mp4?V0lIWk4afWPs3ejN5lxsCi1SIkGKYcNR_F7ijKuQhDmS1sYUK7Ps5TYBcV-MHzdVTujT5p03HP10F_kqzhwhqi38fhOAPnNJz-dMyvA2-YIpBOI-wGtuOjItlVbRUDn6QUWpwe1sRoAl__IA1zmJn3gPvC7Fu926GViqVdLa3oLB0mxRGa7i> click here </a>
QGIS功能概述:学习QGIS(2015) 我已经用xxxxx替换了域名

通过这种方式,我可以在不单击“下一步”的情况下覆盖所有视频(我想知道我是否也可以通过使用一些超时技术来自动化此过程) 单击每个链接时,chrome窗口如下所示:

通过这种方式,单击3dots->下载后,我可以单独保存视频

我想要什么: 方法保存所有视频,无需单独打开。

Challenge 首先,在以下情况下,可以获取和保存大型二进制文件:

  • 主机服务器的支持已启用
  • 从同一服务器访问主机的网络
  • 服务器对服务器
好的,这就是为什么您的锚定尝试不起作用的原因。事实上,从本地主机访问主机的网络将拒绝您访问资源的内容,除非主机服务器的CORS支持已启用,这是不可能的

变通办法 或者,这将给我们留下另外两个选项,从同一站点来源访问,特别是由于其简单性,该策略在于从浏览器本身执行获取/保存脚本,因此,主机服务器将温和地处理请求,因为它们与来自同一地点的非常相似

台阶
  • 转到您希望从中下载文件的站点(我使用过)
  • 右键单击网页并选择“检查”(Ctrl+Shift+I)
  • 最后,切换到“控制台”选项卡开始编码 代码
    const downloaddvideos=(视频,标记)=>{
    //在请求之间进行节流以避免性能或网络问题非常重要
    const throttleTime=10000;//以毫秒为单位;调整它以适应您的硬件/网络功能
    常数域https://www.sample-videos.com“;//站点的域
    如果(标记

    ... 啊哼!一旦你有了一个视频文件名列表,你就可以使用wget或curl来下载它们-你可以从控制台(bash脚本、powershell或任何你的操作系统支持的)下载,或者如果你想通过浏览器这样做,你可以写到本地磁盘(但需要更多的交互来确认每个文件名)我试过这个,但视频的来源是来自另一个域(与网页不同),因此它在同一选项卡中打开视频URL,再次运行此代码会提示下载。我应该做些什么修改?@TheSwapnilsate您能澄清一下
    提示下载的意思吗,以及在新选项卡中再次运行脚本时会发生什么情况?你能报告
    网络
    选项卡活动吗?!请检查我在帖子中所做的更改,并告诉我是否仍然需要发布
    网络选项卡的输出
    @theswapnilsate在新选项卡中打开视频表明存在CORS问题,请尝试导航到“”并从那里运行脚本,也不要忘了将域变量更改为“”。
    <h2>Overview of QGIS features: Learning QGIS (2015)</h2>
    <a href="https://files3.xxxxx.com/secure/courses/383524/VBR_MP4h264_main_SD/383524_01_01_XR15_Overview.mp4?V0lIWk4afWPs3ejN5lxsCi1SIkGKYcNR_F7ijKuQhDmS1sYUK7Ps5TYBcV-MHzdVTujT5p03HP10F_kqzhwhqi38fhOAPnNJz-dMyvA2-YIpBOI-wGtuOjItlVbRUDn6QUWpwe1sRoAl__IA1zmJn3gPvC7Fu926GViqVdLa3oLB0mxRGa7i> click here </a>
    
    const downloadVideos = (videos, marker) => {
      // it's important to throttle between requests to dodge performance or network issues
      const throttleTime = 10000; // in milliseconds; adjust it to suit your hardware/network capabilities
      const domain = 'https://www.sample-videos.com'; // site's domain
    
      if (marker < videos.length) {
        console.log(`Download initiated for video ${videos[marker].name} @ marker:${marker}`);
    
        const anchorElement = document.createElement('a');
    
        anchorElement.setAttribute('href', `${domain}${videos[marker].src}`);
        anchorElement.setAttribute('download', videos[marker].name);
        document.body.appendChild(anchorElement);
    
        // trigger download manually
        anchorElement.click();
        anchorElement.remove();
    
        marker += 1;
        setTimeout(downloadVideos, throttleTime, videos, marker);
      }
    };
    
    // assuming all videos are stored in an array, each video must have 'src' and 'name' attributes
    const videos = [
      { src: '/video123/mp4/480/big_buck_bunny_480p_30mb.mp4', name: 'video_480p.mp4' },
      { src: '/video123/mp4/720/big_buck_bunny_720p_1mb.mp4', name: 'video_720p.mp4' }
    ];
    
    // fireup 
    downloadVideos(videos, 0);