¶前言
最近要下载一个在youtube上的数据库,用来训练神经网络。走国内通道下载比较慢。于是,我使用了vps代理方式下载,速度取决于你的机器连接vps的网速。本文的主要内容有,实现shadowsocks 代理 ,tsocks 代理工具使用,可组合使用的一些下载工具如wget 和axel等。
1 | # 举个栗子 |
嗯嗯,这个速度还不错!
声明:本文以科学研究为目的,请勿滥用。
¶1 Shadowsocks
Shadowsocks是一个轻量级socks5代理工具。在linux平台,我们可使用 python 提供的包管理工具 pip 安装 Shadowsocks ,如下。
1 | # pip 安装 Shadowsocks |
pip安装完之后,可能要重启终端,我们就有ssserver和sslocal小工具了。下面配置server或者client。一般,server配置在国外的vps上,client配置在本地国内机器上。
PS:其他平台安装 参考 shadowsocks官方 install
¶1.1 配置 Shadowsocks server
按下面的三步走,即可。
通过ssh连接到(Virtual Private Server)vps上,或者本地打开终端。
新建一个server_shadowsocks.json文件,内容如下:
1 | { |
- 执行
ssserver -c server_shadowsocks.json
说一点: 由于我们的下载任务是临时的,开个screen(终端复用工具)放在后台。当然你也可以设置为开机自启动,这里不再赘述。
¶1.2 配置 Shadowsocks client
通过ssh连接到机器上,或者本地打开终端。
新建文件 client_shadowsocks.json
1 | { |
- 执行
sslocal -c client_shadowsocks.json
。
说一点:推荐使用screen方式放在后台。当然也可以使用-d 参数放在后台运行。 sslocal -c client_shadowsocks.json -d start
¶2 tsocks
有些linux工具可能没有proxy的代理功能,或者不支持sock5代理,而用tsocks可以很好的解决这些问题。tsocks 是个终端代理工具,可以直接连接shadowsocks提供socks 5代理端口,有点类似于proxychains。
下面简单介绍下安装与使用:
- 安装tsocks
- linux安装tsocks 命令:
apt install tsocks
- mac 安装参考 homebrew-tsocks
- linux安装tsocks 命令:
- 开启上面Shadowsocks的client放在后台。
- 修改tsocks 配置文件,在
/etc/tsocks.conf
文件的最后添加:
1 | local = 192.168.1.0/255.255.255.0 |
¶3 Demo:代理使用
¶3.1 使用 tsocks
在所需代理的命令前加个tsocks就行,如: tsocks wget -c xxxx
,tsocks axel -n 10 -av xxxx
,tsocks curl xxx
¶3.2 使用 youtube-dl
youtube-dl是批量下载youtube视频的好工具。youtube-dl 可以指定 proxy,可以不使用tsocks。
- 安装youtube-dl
1 | pip install --upgrade youtube-dl |
使用举个例子
- 下载youtube视频
1
2
3URL=https://www.youtube.com/playlist?list=PLLbeS1kM6teJqdFzw1ICHfa4a1y0hg8Ax
./youtube-dl --proxy socks5://127.0.0.1:1280 ${URL}
# 在 client_shadowsocks.json 的 local_port 设置为1280,这儿也为1280- 下载里面的mp3
1
youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=xpVfcZ0ZcFM
youtube-dl 中待解决的问题? 想只下载一个视频中的一部分,不用下载整个视频,太费vps流量了。暂未找到解决办法,我找到的一个跟问题很相似的issue,有朋友会整的,望告诉一下。is it possible to download only desired time interval?
¶3.3 使用 axel
axel多线程下载。
1 | tsocks axel -n 3 -a https://www.dropbox.com/s/minpyv59crdifk9/datasets.zip |
1 | -n 3 : 3个线程下载 |
其他方式:下载脚本 axel-bash.sh
1 | #!/bin/sh -e |