hmjz100 / Online-disk-direct-link-download-assistant

一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,自用,去推广,无需输入“暗号”即可使用,甚至比原版还要好用!
https://greasyfork.org/scripts/449291
GNU Affero General Public License v3.0
2.18k stars 94 forks source link

Url长度过长导致无法正常调用BitComet #60

Open QianMoXi opened 6 months ago

QianMoXi commented 6 months ago

系统:windows 11 目前使用的浏览器:Edge、Chrome

目前脚本是使用Url自定义协议的方式调用BitComet,但是我一直无法调用,点了没任何反应,只能一个个链接复制再打开,比较麻烦。

今天验证后发现,是URL长度过长了,理论限制应该是:小于但不等于2048,但是生成出来的URL的长度已经超过3000+了,导致浏览器无法启动BitComet,有可能把生成的URL减少到2048长度以内吗?

比如说:(下面只是个例子,不是实际的能用的链接,但是能调用)BitComet

把BitComet退出后,复制这个链接到浏览器标题栏,能启动BitComet

bc://http/QUEvRGV2RXhwcmVzc0NvbXBvbmVudHNCdW5kbGVTZXR1cC0yMy4yLjQuZXhlLz91cmw9aHR0cHMlM0ElMkYlMkZiajI5LWVuZXQuY24tYmVpamluZy5kYXRhLmFsaWNsb3VkY2NwLmNvbSUyRmxQbUF0TVFDJTI1MkYyMzg5ODkyJTI1MkY2NWJkY2NhYjRjYmJlODQwZDY0ZjRmNGI5OTliZGFiYWY5MzFkOWU4JTI1MkY2NWJkY2NhYjUzMDYxZDMwNjAyZTQ3MWZhNGZmNTFmZmMwNWNlZDdlJTNGY2FsbGJhY2slM0RleUpqWVd4c1ltRmphMVZ5YkNJNkltaDBkSEE2THk5aWFqSTVMbUZ3YVMxb2NDNWhiR2w1ZFc1d1pITXVZMjl0TDNZeUwyWnBiR1V2Wkc5M2JteHZZV1JmWTJGc2JHSmhZMnNpTENKallXeHNZbUZqYTBKdlpIa2lPaUpvZEhSd1NHVmhaR1Z5TG5KaGJtZGxQU1I3YUhSMGNFaGxZV1JsY2k1eVlXNW5aWDFjZFRBd01qWmlkV05yWlhROUpIdGlkV05yWlhSOVhIVXdNREkyYjJKcVpXTjBQU1I3YjJKcVpXTjBmVngxTURBeU5tUnZiV0ZwYmw5cFpEMGtlM2c2Wkc5dFlXbHVYMmxrZlZ4MU1EQXlOblZ6WlhKZmFXUTlKSHQ0T25WelpYSmZhV1I5WEhVd01ESTJaSEpwZG1WZmFXUTlKSHQ0T21SeWFYWmxYMmxrZlZ4MU1EQXlObVpwYkdWZmFXUTlKSHQ0T21acGJHVmZhV1I5WEhVd01ESTJjR1J6WDNCaGNtRnRjejBrZTNnNmNHUnpYM0JoY21GdGMzMGlMQ0pqWVd4c1ltRmphMEp2WkhsVWVYQmxJam9pWVhCd2JHbGpZWFJwYjI0dmVDMTNkM2N0Wm05eWJTMTFjbXhsYm1OdlpHVmtJaXdpWTJGc2JHSmhZMnRUZEdGblpTSTZJbUpsWm05eVpTMWxlR1ZqZFhSbElpd2lZMkZzYkdKaFkydEdZV2xzZFhKbFFXTjBhVzl1SWpvaWFXZHViM0psSW4wJTI1M0QlMjZjYWxsYmFjay12YXIlM0RleUo0T21SdmJXRnBibDlwWkNJNkltSnFNamtpTENKNE9uVnpaWEpmYVdRaU9pSmhZV1pqWldFeFpESm1abVkwT1RZNE9HSTNOVEU1TkRrd05qWTVNakUyWVNJc0luZzZaSEpwZG1WZmFXUWlPaUl5TXpnNU9Ea3lJaXdpZURwbWFXeGxYMmxrSWpvaU5qVmlaR05qWVdJMFkySmlaVGcwTUdRMk5HWTBaalJpT1RrNVltUmhZbUZtT1RNeFpEbGxPQ0lzSW5nNmNHUnpYM0JoY21GdGN5STZJbnRjSW1Gd1hDSTZYQ0l5TldSNldETjJZbGx4YTNSV2VIbFlYQ0o5SW4wJTI1M0QlMjZkaSUzRGJqMjklMjZkciUzRDIzODk4OTIlMjZmJTNENjViZGNjYWI0Y2JiZTg0MGQ2NGY0ZjRiOTk5YmRhYmFmOTMxZDllOCUyNnBkcy1wYXJhbXMlM0QlMjU3QiUyNTIyYXAlMjUyMiUyNTNBJTI1MjIyNWR6WDN2Yllxa3RWeHlYJTI1MjIlMjU3RCUyNnJlc3BvbnNlLWNvbnRlbnQtZGlzcG9zaXRpb24lM0RhdHRhY2htZW50JTI1M0IlMjUyMGZpbGVuYW1lJTI1MkElMjUzRFVURi04JTI1MjclMjUyN0RldkV4cHJlc3NDb21wb25lbnRzQnVuZGxlU2V0dXAtMjMuMi40LmV4ZSUyNnNlY3VyaXR5LXRva2VuJTNEQ0FJUyUyNTJCZ0YxcTZGdDVCMnlmU2pJcjVXSEtldkJ2NFowN3JQU05XeUhwa01FWXZsMHA0Yk9renoySUhGUGVISnJCZUFZdCUyNTJGb3htVzFYNXZ3U2xxNXJSNFFBWGxEZk5WJTI1MkJKSVJUanFGSFBXWkhJbnVEb3g1NW00Y1RY

下面这个就不行了:

bc://http/QUEvRGV2RXhwcmVzc0NvbXBvbmVudHNCdW5kbGVTZXR1cC0yMy4yLjQuZXhlLz91cmw9aHR0cHMlM0ElMkYlMkZiajI5LWVuZXQuY24tYmVpamluZy5kYXRhLmFsaWNsb3VkY2NwLmNvbSUyRmxQbUF0TVFDJTI1MkYyMzg5ODkyJTI1MkY2NWJkY2NhYjRjYmJlODQwZDY0ZjRmNGI5OTliZGFiYWY5MzFkOWU4JTI1MkY2NWJkY2NhYjUzMDYxZDMwNjAyZTQ3MWZhNGZmNTFmZmMwNWNlZDdlJTNGY2FsbGJhY2slM0RleUpqWVd4c1ltRmphMVZ5YkNJNkltaDBkSEE2THk5aWFqSTVMbUZ3YVMxb2NDNWhiR2w1ZFc1d1pITXVZMjl0TDNZeUwyWnBiR1V2Wkc5M2JteHZZV1JmWTJGc2JHSmhZMnNpTENKallXeHNZbUZqYTBKdlpIa2lPaUpvZEhSd1NHVmhaR1Z5TG5KaGJtZGxQU1I3YUhSMGNFaGxZV1JsY2k1eVlXNW5aWDFjZFRBd01qWmlkV05yWlhROUpIdGlkV05yWlhSOVhIVXdNREkyYjJKcVpXTjBQU1I3YjJKcVpXTjBmVngxTURBeU5tUnZiV0ZwYmw5cFpEMGtlM2c2Wkc5dFlXbHVYMmxrZlZ4MU1EQXlOblZ6WlhKZmFXUTlKSHQ0T25WelpYSmZhV1I5WEhVd01ESTJaSEpwZG1WZmFXUTlKSHQ0T21SeWFYWmxYMmxrZlZ4MU1EQXlObVpwYkdWZmFXUTlKSHQ0T21acGJHVmZhV1I5WEhVd01ESTJjR1J6WDNCaGNtRnRjejBrZTNnNmNHUnpYM0JoY21GdGMzMGlMQ0pqWVd4c1ltRmphMEp2WkhsVWVYQmxJam9pWVhCd2JHbGpZWFJwYjI0dmVDMTNkM2N0Wm05eWJTMTFjbXhsYm1OdlpHVmtJaXdpWTJGc2JHSmhZMnRUZEdGblpTSTZJbUpsWm05eVpTMWxlR1ZqZFhSbElpd2lZMkZzYkdKaFkydEdZV2xzZFhKbFFXTjBhVzl1SWpvaWFXZHViM0psSW4wJTI1M0QlMjZjYWxsYmFjay12YXIlM0RleUo0T21SdmJXRnBibDlwWkNJNkltSnFNamtpTENKNE9uVnpaWEpmYVdRaU9pSmhZV1pqWldFeFpESm1abVkwT1RZNE9HSTNOVEU1TkRrd05qWTVNakUyWVNJc0luZzZaSEpwZG1WZmFXUWlPaUl5TXpnNU9Ea3lJaXdpZURwbWFXeGxYMmxrSWpvaU5qVmlaR05qWVdJMFkySmlaVGcwTUdRMk5HWTBaalJpT1RrNVltUmhZbUZtT1RNeFpEbGxPQ0lzSW5nNmNHUnpYM0JoY21GdGN5STZJbnRjSW1Gd1hDSTZYQ0l5TldSNldETjJZbGx4YTNSV2VIbFlYQ0o5SW4wJTI1M0QlMjZkaSUzRGJqMjklMjZkciUzRDIzODk4OTIlMjZmJTNENjViZGNjYWI0Y2JiZTg0MGQ2NGY0ZjRiOTk5YmRhYmFmOTMxZDllOCUyNnBkcy1wYXJhbXMlM0QlMjU3QiUyNTIyYXAlMjUyMiUyNTNBJTI1MjIyNWR6WDN2Yllxa3RWeHlYJTI1MjIlMjU3RCUyNnJlc3BvbnNlLWNvbnRlbnQtZGlzcG9zaXRpb24lM0RhdHRhY2htZW50JTI1M0IlMjUyMGZpbGVuYW1lJTI1MkElMjUzRFVURi04JTI1MjclMjUyN0RldkV4cHJlc3NDb21wb25lbnRzQnVuZGxlU2V0dXAtMjMuMi40LmV4ZSUyNnNlY3VyaXR5LXRva2VuJTNEQ0FJUyUyNTJCZ0YxcTZGdDVCMnlmU2pJcjVXSEtldkJ2NFowN3JQU05XeUhwa01FWXZsMHA0Yk9renoySUhGUGVISnJCZUFZdCUyNTJGb3htVzFYNXZ3U2xxNXJSNFFBWGxEZk5WJTI1MkJKSVJUanFGSFBXWkhJbnVEb3g1NW00Y1RYTkFyJTI1MkJJaHIlMjUyRjI5Q29FSWVkWmRqQmUlMjUyRkNyUmtuWm55d
hmjz100 commented 6 months ago

不大可能把生成的URL减少到2048长度以内,因为脚本的逻辑是先用encodeURIComponent加密之后再base64加密之后拼接成bc链接,链接从base64加密之后就会变得很长了

QianMoXi commented 6 months ago

我想到了可能可行的方法,但我几乎不弄JavaScript,只是看得懂的程度,你看看方便实现不: 方法一(类似目前的RPC下载方式):

  1. 启用BitComet远程下载(用户操作) image
  2. 类似于目前的RPC的下载,允许用户配置对应的远程地址、用户名、密码、下载文件夹(测试了一下,下载文件夹是可选的)
  3. 调用参数前,使用 BC://HTTP/ 让系统也能自动启动BitComet (可选,可能会下个步骤调用前,程序还没启动成功?)
  4. 然后传参调用BitComet进行下载,PostMan大致参数如下: image image
    
    var settings = {
    "url": "http://127.0.0.1:7611/panel/task_add_httpftp_result",
    "method": "POST",
    "timeout": 0,
    "headers": {
    "Content-Type": "application/x-www-form-urlencoded",
    "Authorization": "Basic YWRtaW46YWRtaW4="
    },
    "data": {
    "url": "BC://HTTP/后面的连接",
    "save_path": "D:\\Downloads\\"
    }
    };

$.ajax(settings).done(function (response) { console.log(response); });



方法二(应该更简单):
1. 启用BitComet监视剪贴板URL功能(用户操作)
1. 下载界面上提示一下长度过长,并添加一个复制按钮,能直接复制到剪贴板, 不用一个个右键点击复制链接
1. BitComet自动弹出下载窗口,即使不弹出,也更方便手动去粘贴

不太可能实现的方法:
- 修改系统链接限制,这个限制目前我没找到任何文档有说明, 估计是不可能了
- 调整Url原始链接的长度,即使能解决,估计也治标不治本