Homeへ自動リンク

Part03.getuploaderから直接ダウンロードする: サンプル

【Sample】
https://ux.getuploader.com/kh2017vip3/download/18
(中身はただのテキストファイルです)

直接ダウンロード
url:

【Memo】
 getuploaderから画像以外のファイルをダウンロードする際、確認画面にてダウンロードボタン押下のち、次の画面で数秒待ってからダウンロードが開始される。まどろっこしい。運営会社だって広告見てもらいたいだろうし、通常ダウンロードは仕方ない。しかしサーバーでファイルをダウンロードする際や、中身を解析する場合これは困る。…ということで直接ダウンロードするURLはないか探っていたところ、ある程度推測がついた。目的のURLは恐らく以下のようになっている。

 https://download1.getuploader.com/g/[トークン]/[アップローダ名]/[番号]/[ファイル名]

 上記のうち、[トークン]以外の情報はダウンロードページか、通常のダウンロードリンクの文字列のどこかに存在する。[トークン]は通常ダウンロードページにアクセスした時に生成されるランダム、そして可変文字列である。従って直接ダウンロードするURLも可変していることになる。どのような仕組みか詳細までは分からないが、一定時間経過後や他のアクセスがあったときに[トークン]も直接ダウンロードするURLも書き換えられるので、このことを把握していないとなかなかスクリプトでダウンロードするのは難しい。

 [ファイル名]も厄介で、情報はダウンロードページから情報を取得できるのだが、特殊文字や日本語が変換されているのでこれを戻してあげないとエラーとなってしまう。今回は特定のファイルダウンロードを例にするが、応用すればスレ投下のファイルも直接ダウンロードできる…はず。


・サーバーサイド(Google Apps Script)
  1. GASにアクセスして目的のjsonを得ることはこれまでと同様だが、今回はgetuploaderのダウンロードリンクをGASに送る必要がある
  2. 具体的にはGASのURLの末尾に?url=[ダウンロードリンク]として、GAS側でもその値が受け取れるようにする必要あり
  3. URLが間違っている可能性も考えるとエラー処理は、もっとしっかりするべきかもしれない
  4. このようにしておくとスレッド情報がダブらない(新しいスレッドの場合は新規作成、既に取得しているスレッドの場合は情報更新と
  5. GASのコードこちらから
・ブラウザ(javascript)
  1. 今回の例だとhttps://script.google.com/macros/s/AKfycby3DN-fbka6qzt2ihg_U8YemHO33ZSkB9f21LhPMJRIPiDXhGnz/exec?url=https://ux.getuploader.com/kh2017vip3/download/18にアクセスしてやはりjsonが帰ってくるのを待つ
  2. 今回はページ読み込み時はなく、特定の要素をクリックした時にjavascriptをうごかす
  3. urlが分かったらやはりjavascriptで目的のページに飛ばしてダウンロードが開始する
  4. 詳細はソースコードにて