ごにょごにょ動画からちょっとした製品の仕様書まで、 百度 のオンラインストレージサービス Baidu Pan から ダウンロード したい時はよくありますが、アカウントが必要なのと、謹製ダウンローダが必要になるためいつも諦めていました。これらの要件を回避して、しかも Aria2 で高速に ダウンロード する方法を試してみます。
Baidu Pan
Baidu Panでのダウンロードへは、例えばこのようにリンクとパスワードの対が案内されているのを、特に淘寶やAliexpressなどのショッピングサイトでも見掛けることがあります(下図は以前記事にした、ESP-01S搭載リレーモジュールの淘寶販売ページ)。
リンクを開いてパスワード入力後、ファイルのダウンロードページへ遷移するのですが、ここでは専用のダウンロードクライアントのインストールと、その先には百度アカウント情報(無ければ新規開設)が求められます。
今まではここでいつも諦めていたのですが、今回、以下のステップでこれを回避し、アカウントを無くとも直接ダウンロード出来るようにしてみます。
- Baidu Panのリンクからダウンロードに必要なリンク取得
- マルチコネクション対応ダウンローダで高速ダウンロード
KinhDown在线解析
Baidu Panのリンクとパスワードを解析、直接ダウンロードに必要な情報をオンラインで取得できるページがこちら。ページのロードが終わるまでに2回ほどポップアップが出ますが、いずれも「OK」ボタンを押せば閉じます。
フォームの2つあるテキストフィールドには、上から順にBaidu Panリンクとパスワードを入力し、CAPTCHAを通過させたらその下にある横長の解析ボタンを押すと、次のようにダウンロードファイルの情報が表示されます。
この一番右にある「下載」(ダウンロード)ボタンを押すと解析結果が得られるのですが、またしてもポップアップが何度となく現れるので、いずれもひたすら「OK」で閉じます(テキストボックスが現れても「OK」をクリックするのみ)。
ポップアップをくぐり抜けてたどり着いた解析結果ページでは、次の2つの情報を取得して、手元のテキストファイルにでも保存しておきます。
- 用戸代理(UA)
UserAgentのことで、ダウンローダのなりすましに必要。 - ダウンロードリンク
最下段左から2番目の「複製下載連接」(ダウンロードリンクをコピー)ボタンを押して、クリップボードにコピー。
KinhDownオンライン解析サイトでの作業はここまでです。
wgetでもダウンロードできるも
Linuxでダウンロードツールとして使い慣れているwgetでも、次のように
-U
オプションでUserAgentを指定(シングルクォートで囲むこと)することでダウンロード可能です。その際、
-O
オプションで出力ファイル名を決め打ちしないと、ダウンロードが始まらないことがありました。
尚、ダウンロードリンク情報はコマンドラインに直接記述しても構いませんが、かなり長い文字列なので適当なテキストファイルに保存してから、
-i
オプションでwgetに読ませる形にするとすっきりします。
$ wget -i dl_link.txt -O hoge.mkv -U 'kinh;shuma;netdisk' --2021-08-27 20:35:48-- http://allall02.baidupcs.com/file/mis....(略) allall02.baidupcs.com (allall02.baidupcs.com) をDNSに問いあわせています... 113.200.143.12 allall02.baidupcs.com (allall02.baidupcs.com)|113.200.143.12|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 1075046688 (1.0G) [application/octet-stream] `hoge.mkv' に保存中 hoge.mkv 0%[ ] 469.54K 6.97KB/s eta 30h 2m
但し、シングルコネクションのwgetではこのように、完走までに膨大な所要時間が想定されるので、あまり現実的ではありません。
aria2インストール
今回も作業はいつものUbuntu 18.04母艦で進めていますが、このPCには以前、Windows 11 開発版ダウンロードにUUP dumpを使った際にAria2をインストール済です。入っていない場合はaptパッケージマネージャから、以下の要領で簡単にインストールすることが出来ます。
$ sudo apt install aria2 $ apt search aria2 aria2/bionic,now 1.33.1-1 amd64 [インストール済み] High speed download utility libaria2/bionic 2.8.0+repack-1.2ubuntu1 amd64 C++ library for MobileRobots/ActivMedia robots
aria2cでダウンロード
コマンドラインでのダウンロードにはaria2cを使うのですが、オプション体系がwgetに近似しているので、先ずは最低限のオプションでダウンロードしてみます。出力ファイル名は決め打ちしなくとも、良きに計らってくれます。
$ aria2c -i dl_link.txt -U 'kinh;shuma;netdisk' -d ~/Downloads/ 08/27 10:37:03 [NOTICE] Downloading 1 item(s) *** Download Progress Summary as of Fri Aug 27 20:38:04 2021 *** ================================================================== [#a6bf70 3.6MiB/1.0GiB(0%) CN:1 DL:84KiB ETA:3h25m51s] FILE: ########################.mkv
デフォルトではシングルコネクションなので、
Ctl+C
で中断し、マルチコネクション向けのオプションを考察します。
aria2c(1) — aria2 1.36.0 documentation – aria2.github.io |
-x The maximum number of connections to one server for each download. Default: 1 -s Download a file using N connections. Default: 5 --retry-wait=<SEC> Set the seconds to wait between retries. When SEC > 0, aria2 will retry downloads when the HTTP server returns a 503 response. Default: 0
以上を織り込んで、マルチコネクションに挑戦してみると、個々のコネクションは速くはありませんが、16本並列進行させることで高速化できました。尚、先ほど中断したダウンロードのレジュームも効いていました。
$ aria2c -x16 -s16 -i dl_link.txt -U 'kinh;shuma;netdisk' 08/27 20:56:04 [NOTICE] Downloading 1 item(s) *** Download Progress Summary as of Fri Aug 27 20:57:05 2021 *** ================================================================= [#e5bd2b 63MiB/1.0GiB(6%) CN:16 DL:175KiB ETA:1h33m22s] FILE: ##########################################.mkv -----------------------------------------------------------------
始めは良いのですが、時間が経過すると共に、サーバから次のようなエラーを受け取り、コネクション数(CN)がみるみる減ってゆきます。減ったら増えないようなので、残っているコネクションが少ないようなら、Ctl+Cで一度止めて再度実行した方が効率的でしょう。
08/27 21:17:43 [ERROR] CUID#20 - Download aborted. URI=http://allall02.baidupcs.com/file/fd1... Exception: [DownloadCommand.cc:234] errorCode=1 サーバーから EOF を受けとりました.
複数のダウンロードリンクをテキストファイルに貼り付けておいて、aria2cへ
-i
オプションで渡せば、次のように同時並列処理が始まります。
$ aria2c -x16 -s16 --retry-wait=1 -i dl_link.txt -U 'kinh;shuma;netdisk' -d ~/Downloads/ 08/27 22:53:46 [NOTICE] Downloading 5 item(s) *** Download Progress Summary as of Fri Aug 27 22:54:47 2021 *** ================================================================= [#79756f 12MiB/432MiB(2%) CN:16 DL:235KiB ETA:30m25s] FILE: ##########################################02.mkv ----------------------------------------------------------------- [#6bc388 11MiB/392MiB(2%) CN:16 DL:179KiB ETA:36m17s] FILE: ##########################################03.mkv ----------------------------------------------------------------- [#1efc5d 13MiB/384MiB(3%) CN:16 DL:227KiB ETA:27m49s] FILE: ##########################################04.mkv ----------------------------------------------------------------- [#d6e977 12MiB/479MiB(2%) CN:16 DL:233KiB ETA:34m6s] FILE: ##########################################05.mkv ----------------------------------------------------------------- [#986ed2 13MiB/426MiB(3%) CN:16 DL:229KiB ETA:30m43s] FILE: ##########################################06.mkv ----------------------------------------------------------------- .. (略) .. ダウンロード結果: gid |stat|avg speed |path/URI ======+====+===========+============================================ e1ac07|OK | 61KiB/s|#####################################04.mkv 09f739|OK | 72KiB/s|#####################################03.mkv 7a6c5b|OK | 96KiB/s|#####################################02.mkv ada4e5|OK | 92KiB/s|#####################################06.mkv 46995f|OK | 113KiB/s|#####################################05.mkv 凡例: (OK):ダウンロード完了しました
これもコネクション数がみるみる減ってゆくよう振る舞うので、実際は途中で適宜中断・再開させることで、所要時間を短縮しています。
今回、高速ダウンローダとしてのAria2の能力が分かったので、次回は管理用フロントエンドや、Synology NASへのインストールを試してみたいと思います。
投稿 アカウント無しで百度Baidu PanからAria2でダウンロード は Fun Scripting 2.0 に最初に表示されました。