phoenix-poweryoutube-dlを特定のプロキシサーバー経由で使用する方法

youtube-dlというダウンローダーがありますが、実は、このツールはそれほど便利ではありません。

通常、ダウンローダーの多くは、デフォルトで特定のプロキシサーバーを経由させますが、youtube-dlのそれは、手動での設定になります。

しかし、コマンドラインツールの多くに言えることですが、youtube-dlの場合、更新が早く、かつ応用が効くので、人によっては使いこなすことができると思われます。私には無理ですが…。

今回は、youtube-dlが便利という記事があったので、ここで一つ、youtube-dlの便利な使い方を紹介したいと思います。

たとえば、下記がプロキシを指定する方法です。

1
$ youtube-dl --proxy http://hoge:port $URL

しかし、youtube-dlはデフォルトでプロトコルのsocks5に対応していない感じがします。

1
2
$ youtube-dl --proxy socks5://localhost:9050 $URL
error

たとえば、torでは、socks5を使いますので、環境変数も基本的にはこの設定で行っています。

1
$ http_proxy=socks5://localhost:9050

ここで、youtube-dlも他のWeb系コマンドと同じように、http_proxyなどの環境変数を使用することがありますので、独自に設定していて、それがyoutube-dlに対応していない場合はエラーになります。

したがって、このような場合、一旦、unsetをしなければなりません。

1
2
3
4
5
# URLにSSLを使う場合は最後の2つが必要
$ unset http_proxy HTTP_PROXY https_proxy HTTPS_PROXY

$ youtube-dl $URL
ok

また、torなどの複数のプロキシサーバー経由でyoutube-dlを使うには、proxychainsが便利です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Mac
$ brew install proxychains-ng
$ proxychains4 youtube-dl $URL

# Arch
$ yaourt -S proxychains-ng
$ proxychains youtube-dl $URL

# ただし、環境変数が設定されている場合、proxychainsは有効に動作しませんので、unsetしておきます
$ http_proxy=socks5://localhost:9050
$ proxychains curl ipinfo.io
error

$ unset http_proxy
$ proxychains curl ipinfo.io
41.216.0.106

ここで、proxychainsもオプションや引数関係で使えないことがあります。

youtube-dlの場合は、-a filename.txtでテキストに書かれたURLを一括でダウロードできるオプションがありますが、proxychainsの場合は、たとえば以下のようにしなければなりません。

1
$ proxychains youtube-dl `cat filename.txt|tr '\n' ' '`

trで改行をスペースに変換する必要があるかどうかは知りませんが、念のため。