もっと詳しく

ごにょごにょ動画からちょっとした製品の仕様書まで、 百度 のオンラインストレージサービス Baidu Pan から ダウンロード したい時はよくありますが、アカウントが必要なのと、謹製ダウンローダが必要になるためいつも諦めていました。これらの要件を回避して、しかも Aria2 で高速に ダウンロード する方法を試してみます。

Baidu Pan

Baidu Panでのダウンロードへは、例えばこのようにリンクとパスワードの対が案内されているのを、特に淘寶やAliexpressなどのショッピングサイトでも見掛けることがあります(下図は以前記事にした、ESP-01S搭載リレーモジュールの淘寶販売ページ)。

図1.淘寶ページに見られるBaidu Panリンク

図1.淘寶ページに見られるBaidu Panリンク

リンクを開いてパスワード入力後、ファイルのダウンロードページへ遷移するのですが、ここでは専用のダウンロードクライアントのインストールと、その先には百度アカウント情報(無ければ新規開設)が求められます。

図2.Baidu Panダウンロードページ

図2.Baidu Panダウンロードページ

今まではここでいつも諦めていたのですが、今回、以下のステップでこれを回避し、アカウントを無くとも直接ダウンロード出来るようにしてみます。

  1. Baidu Panのリンクからダウンロードに必要なリンク取得
  2. マルチコネクション対応ダウンローダで高速ダウンロード

 

KinhDown在线解析

Baidu Panのリンクとパスワードを解析、直接ダウンロードに必要な情報をオンラインで取得できるページがこちら。ページのロードが終わるまでに2回ほどポップアップが出ますが、いずれも「OK」ボタンを押せば閉じます。

図3.KinhDown オンライン解析フォーム

図3.KinhDown オンライン解析フォーム

フォームの2つあるテキストフィールドには、上から順にBaidu Panリンクとパスワードを入力し、CAPTCHAを通過させたらその下にある横長の解析ボタンを押すと、次のようにダウンロードファイルの情報が表示されます。

図4.KinhDown 解析ファイル情報

図4.KinhDown 解析ファイル情報

この一番右にある「下載」(ダウンロード)ボタンを押すと解析結果が得られるのですが、またしてもポップアップが何度となく現れるので、いずれもひたすら「OK」で閉じます(テキストボックスが現れても「OK」をクリックするのみ)。

図5.KinhDown ポップアップたち

図5.KinhDown ポップアップたち

ポップアップをくぐり抜けてたどり着いた解析結果ページでは、次の2つの情報を取得して、手元のテキストファイルにでも保存しておきます。

  • 用戸代理(UA)
    UserAgentのことで、ダウンローダのなりすましに必要。
  • ダウンロードリンク
    最下段左から2番目の「複製下載連接」(ダウンロードリンクをコピー)ボタンを押して、クリップボードにコピー。
図6.KinhDown 解析結果ページ

図6.KinhDown 解析結果ページ

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

で中断し、マルチコネクション向けのオプションを考察します。

-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 に最初に表示されました。