youtube-dl借助aria2多线程下载,代理的设置问题
文章目的
不想使用全局代理(Windows的系统代理),因为全局代理意味着系统的浏览都是走代理的,包括连接国内的网络,这样太傻了。
为youtube-dl的下载指定代理只需加个--proxy参数就行了,但是用--external-downloader参数调用aria2的话,也需要为aria2设置代理。
环境配置
参考下面这篇博文即可
Youtube-dl 配置 使用方法 + 配合aria2 多线程 下载 + 配合 ffmpeg 自动合并分段视频
注意:aria2只支持http代理。
折腾过程
1. 尝试用--external-downloader-args为aria2指定代理(不可行)
youtube-dl -i --proxy socks5://127.0.0.1:10808 https://www.youtube.com/watch?v=DfarqWPhP_U --external-downloader aria2c --external-downloader-args '-x 16 -k 1M --all-proxy="http://127.0.0.1:10809"'
存在问题
引号错乱。
aria2要求--all-proxy=代理的地址要用引号,而youtube-dl用--external-downloader-args传的值也要用引号括起来。
这就尴尬了,根本不能这样为aria指定代理。
2. 尝试修改aria2的配置文件aria2.conf(失败)
按理说改一下all_proxy的值就行的,不知为何失败了,修改了配置文件aria2依旧提示连不上网。
aria2.conf放到同一目录、aria2目录、个人文件夹都试了,只能放弃。
3. 开启PAC模式并配置系统代理(失败)
这是为系统全局应用开了PAC模式,能让系统的流量该连代理的连,不该连的不连。比全局模式智能,但需要在客户端做额外的配置。
这样的话就不需要在命令行指定代理了,和全局模式的命令一样:
youtube-dl -i https://www.youtube.com/watch?v=DfarqWPhP_U --external-downloader aria2c --external-downloader-args '-x 16 -k 1M'
但是又失败了.......显然cmd并没有连代理。这就很奇怪,全局模式和PAC模式的效果不应该是一样的吗?

查看windows的设置会发现,PAC模式使用的是上方“自动设置代理”中的脚本,而全局模式使用的是下方的“手动设置代理”。
也许是windows的问题,利用脚本自动设置代理时 不会为cmd代理。
4. 让命令行使用代理(成功)
经过上面的失败,突然意识到,怎么就默认为系统代理会为cmd代理了呢?浏览器不是也有直接连接和系统代理的选项吗?
cmd是不是也能单独设置代理呢?搜索后发现确实如此。
为cmd设置代理:
set http_proxy=http://127.0.0.1:10809
set https_proxy=https://127.0.0.1:10809
如果有用户名和密码
set http_proxy_user=jake
set http_proxy_pass=abcd
查看:
set http_proxy
set https_proxy
取消:
set http_proxy=
set https_proxy=
另外,经过实验,代理设置只会应用到当前的命令提示符窗口。
设置后,正常下载就好了:
youtube-dl -i https://www.youtube.com/watch?v=DfarqWPhP_U --external-downloader aria2c --external-downloader-args '-x 16 -k 1M'
要注意:网址普遍使用https协议,所以一定要记着设置set https_proxy,不要只设了set http_proxy
浙公网安备 33010602011771号