Merhaba, Yabancı!

Burada yeni gibi görünüyorsunuz. Eğer katılmak istiyorsanız düğmelerden birine tıklayınız.

功能建议(远程aria2及aria2密码设置支持)与补丁

About: Aria2下载助手

脚本不错,一些小建议如下:
现在百度网盘下载助手默认的aria2 jsonrpc是127.0.0.1的本地端口,之前一直是把aria2放在nas或者路由上24小时下载,试了下把jsonrpc改成其它局域网ip地址就报错"连接aria2失败",另外因为aria2开放远程访问后一般为了安全也会设置rpc-secret之类的密码,这个目前也不支持,自己改了下代码补丁如下,根据0.2.6.20191116版本修改,测试了firefox下正常,供有需要者参考,建议把相关功能加入:

aria2(e, t = "http://127.0.0.1:6800/jsonrpc")  {
            let o = [],
                f = {
                    id: u.uid(),
                    method: "system.multicall",
                    params: []
                };


            function parseUrl(url) {
                var m = url.match(/^(([^:\/?#]+:)?(?:\/\/((?:([^\/?#:]*):([^\/?#:]*)@)?([^\/?#:]*)(?::([^\/?#:]*))?)))?([^?#]*)(\?[^#]*)?(#.*)?$/),
                    r = {
                        hash: m[10] || "",                   // #asd
                        host: m[3] || "",                    // localhost:257
                        hostname: m[6] || "",                // localhost
                        href: m[0] || "",                    // http://username:password@localhost:257/deploy/?asd=asd#asd
                        origin: m[1] || "",                  // http://username:password@localhost:257
                        pathname: m[8] || (m[1] ? "/" : ""), // /deploy/
                        port: m[7] || "",                    // 257
                        protocol: m[2] || "",                // http:
                        search: m[9] || "",                  // ?asd=asd
                        username: m[4] || "",                // username
                        password: m[5] || ""                 // password
                    };
                if (r.protocol.length == 2) {
                    r.protocol = "file:///" + r.protocol.toUpperCase();
                    r.origin = r.protocol + "//" + r.host;
                }
                r.href = r.origin + r.pathname + r.search + r.hash;
                return m && r;
            };

            var uri = parseUrl(t);

            e.forEach(e => {
                let t = {
                    methodName: "aria2.addUri",
                    params: []
                };
                if (uri.username && uri.password) {
                    t.params.push(uri.username + ":" + uri.password);
                }
                t.params.push(e.url), t.params.push({
                    "use-head": "true",
                    header: ipod.header,
                    split: "" + e.url.length,
                    dir: ipod.aria2.dir,
                    out: e.path.replace(/\s+\/\s+/g, "/")
                });
                o.push(t)
            }), f.params.push(o);

            GM_xmlhttpRequest({
                method: "POST",
                url: t,
                data: JSON.stringify(f),
                onerror (o) {
                    alert("failed to send aria2 request");
                }
            });
        },

Yorumlar

  • 谢谢支持!没有放支持远程aria2的版本是因为觉得有不少人不了解aria2,我刚在哔哩哔哩下载助手这个脚本釆用搭配aria2的方式时,常常有人来问下载后文件在哪里。所以觉得一步一步来比较好,哔哩哔哩下载助手在前几天就更新了支持远程的版本。等看看情况,没啥动静这边就跟着更新。
  • 试了下今天最新的v0.2.7.20191119,看到aria2的口令设置已经加上了,这个试了下没有问题,但设置远程aria2后仍然不行,firefox下可以看到控制台的错误信息"已阻止载入混合活动内容" 或 "已拦截跨源请求:同源策略禁止读取 远程资源" (用https jsonrpc),不知道远程aria2支持是否已加入。按照之前代码里的fetch改成GM_xmlhttpRequest倒是没有问题了。

  • 感谢你的支持,也可以调一下浏览器的安全设置,让其不阻止载入混合内容。

  • firefox默认设置是阻止载入混合内容的,设置界面里没有直接关于此项的设置,通过about:config修改security.mixed_content.block_active_content为false后远程aria2可以正常工作了,但该项设置为全局安全设置,默认设置安全性会更高些,而且脚本出错没有相关提示信息,普通用户较难找到相关设置项来修改解决问题。

Yorum yapmak içinOturum Açın yada Kayıt Olun .