新年好啊,我也不知道为什么第一篇是这么个东西。总之因为英特尔捅的这两个破篓子,我不得不抛弃 Fx 56 了。再次跟上 Mozilla 的更新脚步之后,带来的最大问题是像 DownThemAll! 和 Tab Mix Plus 这样的强力插件失去了用武之地(当然在 Fx 57 还有 hack 旧扩展的办法,文后附)。下载工具的替代方案里,纯扩展的办法比较难办,主要受限于 we 没有提供本地文件访问权限,而且多线程下载也受到限制,所以最好的解决方案是调用第三方工具;没有 TMP 就暂时改改配置项凑活用了。这几个月网上相关的资料也比较多,所以我不再一一重复了。这里记录一下自己换用 aria2 配合扩展解决 dta 不能用的解决方案。
aria2 不用介绍了,下载方案有很多,GUI 各平台下都有,通过网页管理也很容易。题外话,推荐一个叫做 bgmi 的项目(地址),配合内网服务器/ NAS 下番很方便。说回正文,首先你需要根据自己的平台下载一个 aria2,并且配置 daemon 启动。在 Windows 下,为了便于管理后台 console 窗口,我选择了一个小软件:CommandTrayHost。
项目地址:https://github.com/rexdf/CommandTrayHost
初次使用需要建立 config,我们按照 wiki 和本地示例的提示将 aria2 的 daemon 设置好:
{ "name": "Aria2c daemon", "path": "D:\\Program Files\\Aria2c", "cmd": "aria2c.exe --conf-path=\".\/aria2.conf\"", //不用配置可执行文件的完整路径,CTH 会自己用 path 参数做拼接。 "working_directory": "", "addition_env_path": "", "use_builtin_console": false, "is_gui": false, "enabled": true, //随 CTH 启动而启动 aria2 “kill_timeout”: 2000, //CTH 关闭时延迟中止进程,给 aria2 保存 session 的缓冲时间 },
添加到程序同目录下的 config.json
里,程序路径及其他内容请自行修改。然后不要忘了配置 aria2 的环境,并启用 rpc 支持。我自己的配置:
## 文件保存相关 ## # 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置 dir=F:/BaiduYunDownload/ # 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M disk-cache=16M # 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc # 预分配所需时间: none < falloc ? trunc < prealloc # falloc和trunc则需要文件系统和内核支持 # NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项 file-allocation=falloc # 断点续传 continue=true ## 下载连接相关 ## # 最大同时下载任务数, 运行时可修改, 默认:5 max-concurrent-downloads=5 # 同一服务器连接数, 添加时可指定, 默认:1 max-connection-per-server=5 # 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M # 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载 min-split-size=10M # 单个任务最大线程数, 添加时可指定, 默认:5 #split=5 # 整体下载速度限制, 运行时可修改, 默认:0 max-overall-download-limit=0 # 单个任务下载速度限制, 默认:0 max-download-limit=0 # 整体上传速度限制, 运行时可修改, 默认:0 max-overall-upload-limit=0 # 单个任务上传速度限制, 默认:0 max-upload-limit=0 # 禁用IPv6, 默认:false #disable-ipv6=true # 连接超时时间, 默认:60 timeout=60 # 最大重试次数, 设置为0表示不限制重试次数, 默认:5 max-tries=5 # 设置重试等待的秒数, 默认:0 #retry-wait=0 ## 进度保存相关 ## # 从会话文件中读取下载任务 input-file=./aria2.session # 在Aria2退出时保存<code>{{EJS9}}</code>的下载任务到会话文件 save-session=./aria2.session # 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0 #save-session-interval=60 ## RPC相关设置 ## # 启用RPC, 默认:false enable-rpc=true # 允许所有来源, 默认:false rpc-allow-origin-all=true # 允许非外部访问, 默认:false rpc-listen-all=true # 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同 #event-poll=select # RPC监听端口, 端口被占用时可以修改, 默认:6800 #rpc-listen-port=6800 # 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项 #rpc-secret=<TOKEN> # 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项 #rpc-user=<USER> # 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项 #rpc-passwd=<PASSWD> # 是否启用 RPC 服务的 SSL/TLS 加密, # 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接 #rpc-secure=true # 在 RPC 服务中启用 SSL/TLS 加密时的证书文件, # 使用 PEM 格式时,您必须通过 --rpc-private-key 指定私钥 #rpc-certificate=/path/to/certificate.pem # 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件 #rpc-private-key=/path/to/certificate.key ## BT/PT下载相关 ## # 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true #follow-torrent=true # BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999 listen-port=51413 # 单个种子最大连接数, 默认:55 #bt-max-peers=55 #DHT IPv4/6 文件位置 dht-file-path=./dht.dat dht-file-path6=./dht6.dat # 打开DHT功能, PT需要禁用, 默认:true enable-dht=true # 打开IPv6 DHT功能, PT需要禁用 enable-dht6=false # DHT网络监听端口, 默认:6881-6999 dht-listen-port=6881-6999 # 本地节点查找, PT需要禁用, 默认:false bt-enable-lpd=false # 种子交换, PT需要禁用, 默认:true enable-peer-exchange=false # 每个种子限速, 对少种的PT很有用, 默认:50K #bt-request-peer-speed-limit=50K # 客户端伪装, PT需要 peer-id-prefix=-TR2770- user-agent=Transmission/2.77 # 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0 seed-ratio=1.5 # 强制保存会话, 即使任务已经完成, 默认:false # 较新的版本开启后会在任务完成后依然保留.aria2文件 force-save=false # BT校验相关, 默认:true #bt-hash-check-seed=true # 继续之前的BT任务时, 无需再次校验, 默认:false bt-seed-unverified=true # 保存磁力链接元数据为种子文件(.torrent文件), 默认:false bt-save-metadata=true
有注释,配合自己的需求改就好了。此外不要忘了建立 aria2.session
和 aria2.log
两个文件。需要 DHT 数据的话可以网上搜一份。然后启动 CTH,aria2 也就一起启动了。火狐这边,我选择用 Aria2 下载器集成组件,如果前述设置都是默认未修改,扩展安装即用。如果动了 RPC 端口或启用了 Auth 方式,那么在相应的设置项里做修改即可。如果想管理远程服务器上的 aria2,那么相应修改服务器地址就行。都配置好后实际效果还不错:
也算是在阵痛期的过渡方案了。前述提到一个 hack 旧扩展的法子,这里也介绍一下。在 about:config
里修改 extensions.legacy.enabled
项为 true。但此方法仅适用于开发者和 Nightly 版本,且随着 Mozilla 对 API 的修改会导致旧扩展不稳定的现象,所以如果你都已经升级了,那么暂时抛弃它们或者换第三方编译版。如果没升级,就暂时停在 52 esr 或者 56,不过 56 不会有安全补丁就是了(第三方应用的修补只是一个临时措施,那两个漏洞主要还得看硬件和系统厂商重构虚拟内存和处理器内部指令执行方式解决)。就说牙膏厂捅的篓子太大,是到了换新电脑的时候了(都特么是阴谋)。不过也没有办法,谁让这玩意儿不能自产自销呢。
此外还可以配置百度云和迅雷离线加速,这一块的内容就更多了,这里不再介绍,有兴趣可以自行搜索。
参考资料:
学习到了,谢谢茄子。然而我需要一台 NAS(
在自己电脑上鼓捣鼓捣不就完了。
嗯 想指出一个问题,cmd不需要完整路径的。我也不知道完整路径是否能运行。
之所以有path与cmd,是因为首先会在载入配置阶段就看一下path下面是否有这个exe文件,然后运行前会把他们拼接起来。
因为不是手工拼接,而是操作系统的PathCombine拼接的,所以可能cmd带完整路径也行。path末尾带不带\\应该都没有关系,PathCombine会自动补全。
谢谢回复(没想到原作者也来了)。
这样写确实能正常运行,开始是按以前的习惯把完整路径直接复制进去了。后来翻了项目说明发现不用写全,不过本机配置没改。我在文章里改一下。
因为github的traffic里面看到了一个referer。这种用法还真是出乎我的意料,Windows自带的API果然神奇。配置现在是支持热加载,也就是一保存就会自动重新加载,加载失败什么也不会发生。
Windows 还是一个大黑箱
只是源码级别黑箱罢了。研究Windows系统的二进制行为的全世界应该不计其数,虽然没源码Windows内核调试似乎也还算方便(《软件调试》.张银奎)。一些研究机构可能了解的不会比微软差多少。只是没法重造一个Windows兼容的操作系统(ReactOS不算),以及没法自己修改操作系统。 况且开源软件就算有源码,也不那么容易就能从源码发现与修复其中的漏洞或者bug,只是修复的时候方便些。 当然了黑Windows政治正确的就是了,笑
嗯 刚刚发了个针对aria2的session加强支持的版本,添加了一个选项
"kill_timeout": 2000, // 通知aria2,要关闭了,并等两秒钟,让aria2有足够的时间保存session
这样不是直接杀进程,session会被保存,正在下载的再次打开会接着下载了。
不过貌似有些种子完全没速度啊,加了bt-tracker也貌似没啥效果。
可能需要个 DHT,对付国内运营商恐怕还得把加密什么的都打开了。如果有机会还是混 pt 会好一点(那样的话 aria2 用处也就小了)。
好的我研究下DHT,PT的话是要注册论坛的那种么。嗯,如果是电信封的话也许得开一个DMCA free VPS。
三大还好一点,像长宽那种的就基本没救了。
不过最好的办法可能还是 115?
换电脑还得等一阵子(望天