Greasy Fork

来自缓存

Greasy Fork is available in English.

Nvidea显驱下载工具

显示更老的N卡驱动

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Nvidea显驱下载工具
// @description  显示更老的N卡驱动
// @description  Show older Nvidia drivers
// @author       皇家养猪场
// @namespace    皇家养猪场
// @note         安装此脚本后前往 https://www.nvidia.cn/geforce/drivers/ 能够看到更老的驱动。
// @note         注意: 开启此脚本后 查询驱动所需的时间也会增加!!!
// @note         After installing this script, you can see older drivers at https:/www.nvidia.com/en-us/geforce/drivers/.
// @note         Note: After turning on this script, the time required to query the driver will also increase!!!
// @note         ===== 2022-02-18 =====
// @note         修复了无法显示5XX版本驱动的问题
// @note         ===== 2023-04-15 =====
// @note         修复了只显示10个Studio驱动的问题
// @note         ===== 2024-02-22 =====
// @note         添加提示
// @note         ===== 2024-04-07 =====
// @note         ===== 2024-11-21 =====
// @note         ===== 2024-11-25 =====
// @note         修复无法正常查询驱动的问题(502 Bad Gateway)
// @version      0.7
// @create       2021-10-22
// @lastmodified 2024-11-25
// @charset      UTF-8
// @match        *://www.nvidia.cn/geforce/drivers/
// @match        *://www.nvidia.com/en-us/geforce/drivers/
// @run-at       document-idle
// @grant        unsafeWindow
// @grant        GM_addStyle
// @compatible   chrome
// @license      MIT
// ==/UserScript==

(function () {
    const tips = {
        'zh-cn': '选择 Windows 10 系统以查看更多老版本驱动',
        'zh-hk': '選擇 Windows 10 系統以查看更多舊版本驅動',
        'en-us': 'Select Windows 10 to view more old version drivers'
    };

    GM_addStyle(`
    #DrvrManuvalSrh .body-text.description.color-ui-elements::after {
        content: "${tips[navigator.language.toLowerCase()] ?? tips['en-us']}";
        color: #FF0;
    }
    `);

    const allowedParams = ['func', 'psid', 'pfid', 'osID', 'languageCode', 'isWHQL', 'dch', 'qnf'];

    function changeUrl(url) {
        try {
            const urlObj = new URL(url);

            // 替换回老 host
            if (urlObj.host === 'gfwsl.geforce.cn')
                urlObj.host = 'gfwsl.geforce.com';

            // 删除不必要的参数, 避免 502 Bad Gateway
            for (let [k, v] of urlObj.searchParams) {
                if (!allowedParams.includes(k)) {
                    console.warn(`[Warn][Nvidea显驱下载工具]: remove request param: `, `${k}=${v}`)
                    urlObj.searchParams.delete(k);
                }
            }

            // 修改请求的驱动个数
            urlObj.searchParams.set('numberOfResults', 500);
            console.warn(`[Warn][Nvidea显驱下载工具]: final request params:`, new Map(urlObj.searchParams.entries()));
            return urlObj.toString();
        } catch (err) {
            console.error('[Error][Nvidea显驱下载工具]: ', err);
            return url;
        }
    }

    XMLHttpRequest.prototype.open = new Proxy(XMLHttpRequest.prototype.open, {
        apply(target, thisArg, args) {
            let [method, url, async] = args;
            // match download url
            if (/^https?:\/\/gfwsl\.geforce\.(com|cn)\/services_toolkit\/services\/com\/nvidia\/services\/AjaxDriverService\.php/.test(url)) {
                args[1] = changeUrl(url);
            }
            return target.apply(thisArg, args);
        }
    });
})();