找回密码
  注册[Register]
查看: 1036|回复: 15

[web] 【油猴脚本】夸克网盘直链下载

[复制链接]
发表于 2022-8-23 09:08 | 显示全部楼层 |阅读模式
禁止求评分、诱导评分、互刷评分、互刷悬赏值,违规者封号处理。
禁止发布推广、邀请码、邀请链接、二维码或者有利益相关的任何推广行为。
所有非原创软件请发布在【精品软件区】,发帖必须按照本版块版规格式发帖。

夸克网盘对较大文件需要安装客户端才能下载,分享一个油猴脚本,使夸克网盘大文件可直接通过浏览器或搭配IDM下载
脚本地址:https://greasyfork.org/zh-CN/scripts/448675   
注意:1.使用脚本需先保存到自己网盘内。2.无法直接下载整个文件夹。3.一次下载多个文件时浏览器可能会拦截弹窗,需要手动允许。

使用方法:
182515ckchtqkwlhv2jzw2.png
182520versfxr9zxndrkqn.png

[Asm] 纯文本查看 复制代码
// ==UserScript==
// @name         夸克网盘直链下载
// [url=home.php?mod=space&uid=46605]@version[/url]      1.1
// @namespace    https://pan.quark.cn/list
// [url=home.php?mod=space&uid=74123]@Description[/url]  解除夸克网盘下载限制,直接在浏览器中下载
// @author       Lingo Wang
// @license      MIT
 
// @match        https://pan.quark.cn/list*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=quark.cn
// @grant        GM_xmlhttpRequest
// @grant        GM_log
// @grant window.onurlchange
// ==/UserScript==
 
(function () {
    'use strict';
    GM_log('quark download is running.');
 
    setInterval(gmMain, 250);
    const fidAttrName = 'data-row-key';
 
    function gmMain() {
        const checkboxes = document.getElementsByClassName('ant-checkbox-input');
        if (checkboxes === undefined || checkboxes.length <= 1) {
            console.log('document element not loaded yet');
            return;
        }
 
        // checkboxes.length > 1
        console.log('document element loaded, start dealing download btn');
        for (let i = 0; i < checkboxes.length; i++) {
            checkboxes[i].addEventListener('change', (event) => {
                if (event.currentTarget.checked) {
                    addDownloadBtnListener();
                }
            })
        }
 
        // flow download btn
        addFlowDownloadBtnListener();
    }
 
    function addDownloadBtnListener() {
        let downloadBtn = getDownloadBtn();
        downloadBtn.replaceWith(downloadBtn.cloneNode(true));   // remove all event listener
        downloadBtn = getDownloadBtn();
 
        downloadBtn.addEventListener('click', () => {
            let fids = getSelectedFids();
            download(fids);
        })
    }
 
    function addFlowDownloadBtnListener() {
        for (const btn of getFlowDownloadBtns()) {
            btn.replaceWith(btn.cloneNode(true));   // remove all event listener
        }
 
        for (const btn of getFlowDownloadBtns()) {
            btn.addEventListener('click', () => {
                const fid = btn.parentElement.parentElement.parentElement.parentElement.parentElement.getAttribute(fidAttrName);
                download([fid]);
            })
        }
    }
 
    function download(fids) {
        GM_xmlhttpRequest({
            method: "POST",
            url: "https://drive.quark.cn/1/clouddrive/file/download?pr=ucpro&fr=pc&ve=2.1.5",
            headers: {
                "Content-Type": "application/json;charset=utf-8"
            },
            data: JSON.stringify({"fids": fids}),
            onload: function (res) {
                console.log('get real download url, fids: %o, res: ', fids, res.responseText);
                let resData = JSON.parse(res.responseText).data;
                if (resData === undefined || resData.length === 0) {
                    console.log('error!, data is empty. request fids: ', fids);
                    alert('获取直链失败, 请尝试刷新页面!注意,文件夹不支持直链下载!')
                    return;
                } else {
                    console.log('get real download url, size: ', resData.length)
                }
 
                resData.forEach(o => window.open(o.download_url));
            }
        });
    }
 
    function getDownloadBtn() {
        let btnGroup = document.getElementsByClassName('ant-btn btn-file');
        let downloadBtn;
        for (let i = 0; i < btnGroup.length; i++) {
            if ('下载' === btnGroup[i].firstElementChild.innerText) {
                downloadBtn = btnGroup[i];
            }
        }
        return downloadBtn;
    }
 
    function getFlowDownloadBtns() {
        return document.getElementsByClassName('hover-oper-item hoitem-down');
    }
 
    function getSelectedFids() {
        const checkboxes = document.getElementsByClassName('ant-checkbox-input');
        let fids = [];
        for (let i = 0; i < checkboxes.length; i++) {
            if (checkboxes[i].checked) {
                const fid = checkboxes[i].parentElement.parentElement.parentElement.parentElement.parentElement.getAttribute('data-row-key');
                if (fid !== undefined && fid !== '') {
                    fids.push(fid);
                }
            }
        }
        return fids;
    }
})();

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2022-8-23 09:08 | 显示全部楼层
谢谢分享!
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-8-23 09:25 | 显示全部楼层

感谢楼主的分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-8-23 09:26 | 显示全部楼层
感谢楼主分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-8-23 09:26 | 显示全部楼层
多谢楼主分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-8-23 09:27 | 显示全部楼层
谢谢@Thanks!
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-8-23 09:29 | 显示全部楼层
谢谢大佬分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-8-23 09:32 | 显示全部楼层
谢谢分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-8-23 09:53 | 显示全部楼层
6666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-8-23 09:59 | 显示全部楼层

支持楼主,谢谢分享。
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

RSS订阅|手机版|小黑屋|大牛论坛 |我的广告

GMT+8, 2024-5-5 04:25 , Processed in 0.054127 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表