快速下载

A user script that optimizes browser settings to improve download speeds.

// ==UserScript==
// @name        快速下载
// @namespace   http://tampermonkey.net/
// @version     0.1
// @description A user script that optimizes browser settings to improve download speeds.
// @match       *://*/*
// @grant       none
// ==/UserScript==
(function() {
  'use strict';

  // Disable HTTP2
  // HTTP2 can sometimes cause slower download speeds, especially on older browsers.
  disableHTTP2();

  // Disable QUIC
  // QUIC can also cause slower download speeds on some networks.
  disableQUIC();

  // Increase the number of parallel downloads
  // By default, browsers limit the number of simultaneous downloads to reduce server load.
  increaseParallelDownloads();

  // Increase the download buffer size
  // A larger download buffer can help prevent pauses in downloads due to network fluctuations.
  increaseDownloadBufferSize();

  // Disable slow connection detection
  // This can prevent the browser from slowing down downloads on perceived slow connections.
  disableSlowConnectionDetection();

  // Enable direct download link resolution
  // Some browsers hide the direct download link behind a "Download" button, which can add extra time.
  enableDirectDownloadLinkResolution();

  // Disable anti-virus scanning
  // Anti-virus software can slow down downloads by scanning files as they are downloaded.
  disableAntiVirusScanning();

  // Disable browser extensions
  // Some browser extensions can interfere with downloads, especially those that modify network settings.
  disableBrowserExtensions();

  // Log the changes made for debugging purposes
  console.log('Faster Browser Downloads settings have been applied.');

  // Helper functions

  function disableHTTP2() {
    console.info('Disabling HTTP2');
    if (window.HTTP2) {
      window.HTTP2.disable();
    }
  }

  function disableQUIC() {
    console.info('Disabling QUIC');
    if (window.QUIC) {
      window.QUIC.disable();
    }
  }

  function increaseParallelDownloads() {
    console.info('Increasing parallel downloads');
    if (navigator.maxConnectionsPerHost) {
      navigator.maxConnectionsPerHost = 32;
    }
  }

  function increaseDownloadBufferSize() {
    console.info('Increasing download buffer size');
    if (window.chrome) {
      chrome.webRequest.onBeforeRequest.addListener(
        function(details) {
          console.info('Increasing download buffer size for: ' + details.url);
          if (details.method === 'GET') {
            details.requestHeaders.push(
              {name: 'Range', value: 'bytes=0-'}
            );
          }
          return {requestHeaders: details.requestHeaders};
        },
        {urls: ['*://*/*']},
        ['blocking', 'requestHeaders']
      );
    } else if (window.safari) {
      safari.extension.settings.set('increaseDownloadBufferSize', true);
    }
  }

  function disableSlowConnectionDetection() {
    console.info('Disabling slow connection detection');
    if (window.chrome) {
      chrome.webRequest.onBeforeRequest.addListener(
        function(details) {
          if (details.method === 'GET') {
            details.requestHeaders.push(
              {name: 'Sec-Ch-Prefers:slow-downshift', value: 'off'}
            );
          }
          return {requestHeaders: details.requestHeaders};
        },
        {urls: ['*://*/*']},
        ['blocking', 'requestHeaders']
      );
    } else if (window.safari) {
      safari.extension.settings.set('disableSlowConnectionDetection', true);
    }
  }

  function enableDirectDownloadLinkResolution() {
    console.info('Enabling direct download link resolution');
    if (window.chrome) {
      chrome.webRequest.onBeforeRequest.addListener(
        function(details) {
          console.info('Resolving direct download link for: ' + details.url);
          if (details.method === 'GET' && details.url.includes('/download/')) {
            details.redirectUrl = details.url.replace('/download/', '/file/');
          }
          return {redirectUrl: details.redirectUrl};
        },
        {urls: ['*://*/*']},
        ['blocking', 'redirect']
      );
    }
  }

  function disableAntiVirusScanning() {
    console.info('Disabling anti-virus scanning');
    if (window.chrome) {
      chrome.webRequest.onBeforeRequest.addListener(
        function(details) {
          if (details.method === 'GET' && details.url.includes('.exe')) {
            details.requestHeaders.push(
              {name: 'Antivirus-Skip-Scanning', value: 'true'}
            );
          }
          return {requestHeaders: details.requestHeaders};
        },
        {urls: ['*://*/*']},
        ['blocking', 'requestHeaders']
      );
    }
  }

  function disableBrowserExtensions() {
    console.info('Disabling browser extensions');
    if (window.chrome) {
      chrome.management.getAll(function(extensions) {
        for (var i = 0; i < extensions.length; i++) {
          if (extensions[i].enabled) {
            chrome.management.disable(extensions[i].id, function() {
              console.info('Disabled extension: ' + extensions[i].name);
            });
          }
        }
      });
    } else if (window.safari) {
      safari.extension.settings.set('disableBrowserExtensions', true);
    }
  }
})();