匿名でファイルをダウンロードする

記事作成日:2022/03/06

Automateでプライバシーを向上したネットワークでファイルをダウンロードする事を今回の目標としています。

Torプロキシを使用するため、抵抗のある方は利用を推奨しません。

Orbot を使用します

Orbot を既にダウンロード済みであればこの手順は飛ばしても構いません。

Orbot は、Google play ストア もしくは、Fdroid公式サイト、 よりダウンロードできます。

より詳しいコードは Github から。

⚠️ 絶対に、公式サイト以外(APKミラーサイト等)からダウンロードしないようにしてください ⚠️

ダウンロードが完了したら、インストールしてください。

Orbot を起動する

インストールして起動したら、タマネギアイコンをタッチか長押しして、Torサービスを起動します。

スクリーンショット

特に追加の設定はする必要はありませんが、必要であれば各自で設定します。

[注意]

VPNモードは使用しません。あらかじめスイッチを無効にしておいてください。

Orbot 起動後

スクリーンショット

起動後は画像のようになります。
タマネギアイコンのしたに、SOCKS 、HTTP のポート番号が表示されているので、SOCKS の方の番号をメモします。

この画像では 9050 となっています。大抵の場合は SOCKS のポートは 9050 になります。(任意で変更しない限り)

Automate での操作

今回は、使用中のグローバルIPアドレスを取得するサイト(ipinfo.io)を使用します。

用途に応じて、URLは変更できます。


Shell command ブロック。 コマンドライン設定

画像

画像のように以下のコマンドを入力します。

先ほど SOCKSのポート番号をメモしたはずなので、

curl --socks5 localhost:この部分 [URL]

この部分をメモした番号を指定します。

以下のコマンドと同じようであれば、変更する必要がありません。


ファイルとして保存する場合。(上書きモード)

sh -c {cliEncode("curl --socks5 localhost:9050 ipinfo.io > {storage("downloads")}/file.tmp")}
            

sh -c {cliEncode(“curl --socks5 localhost:[SOCKS ポート番号] [URL] > [保存先のパス/ファイル名]”)}


ファイルとして保存する場合。(追記モード)

sh -c {cliEncode("curl --socks5 localhost:9050 ipinfo.io >> {storage("downloads")}/file.tmp")}
            

sh -c {cliEncode(“curl --socks5 localhost:[SOCKS ポート番号] [URL] >> [保存先のパス/ファイル名]”)}


結果をテキストとして変数に格納する場合。

Standerd output text に変数を指定して結果が格納されます。

curl --socks5 localhost:9050 ipinfo.io
            

curl --socks5 localhost:[SOCKS ポート番号] [URL]


用途に合う上記のコマンドを使用できます。

OrbotのTorが起動できていない場合は、何も出力されないので注意が必要です。

ファイルをダウンロード

下記のコマンドを使用してファイルを保存できます。

sh -c {cliEncode(“curl --socks5 localhost:[SOCKS ポート番号] [URL] > [保存先のパス/ファイル名]”)}

[]
[SOCKS ポート番号] Orbot の接続画面の SOCKS:〇〇〇 の部分
[URL] ダウンロード元のURL
[保存先のパス/ファイル名] 保存先を指定する を参照

保存先を指定する

保存先を、直接指定する必要があります。

しかし、フルパスで指定する必要はありません。

/storage/emulated/0/Downloads/File.tmp に保存したい場合は、

  1. {storage("downloads")}/File.tmp
  2. Downloads/File.tmp

上の2つのように指定できます。

ファイル名部分を指定しないと保存されないため注意が必要です。

また、これらの動作は、Working directory が無記入、"." である場合に限られます。


通信エラーのキャッチ

image

Failure catch ブロックを、 Shell command ブロックの前に配置します。

通信に何らかのエラーが発生した場合は、ファイバーは Fail パスに流れます。

サンプル

Flow

上の画像は、tor を介したファイルダウンロードのサンプルです。

エラー処理が2個あり、
Shell command 側と、Failure catch ブロック側でエラーを検出します。


《Failure catch ブロックの中身》

i

Shell command 側で取得できないエラーを検出するために使用します。

エラーメッセージを取得するために err 変数を指定してあります。


《Shell command ブロックの中身》

i

Command Line が見切れていますが以下の内容が入力されています。

sh -c {cliEncode("curl --socks5 localhost:9050 ipinfo.io > file.tmp")}
            

ファイルの保存先は、私の環境では、/storage/emulated/0/file.tmp に保存されました。

Shell command 側でも、エラーを検出できるように終了コードに、exit 変数を指定してあります。

また、Standard error output にも、エラー内容を取得するために err 変数を同じく指定しています。


《Expression ブロックの中身》

i

exit = 0 が成立しない場合は、exit が正常に終了する以外の処理の終わり方をしたため、No パスに流れるようになっています。

注意

この操作では、Torを扱います。

Torはプライバシーの向上に大きく貢献しています。

Torの匿名化のメカニズムは通信速度をどうしても遅くしてしまいます。(0 ~ 1MB/s くらい、多くは 0 ~ 400KB/s)

通信をする際、非SSL通信(http)を行うと、末端の出口では通信内容が暗号化されません。SSL(https)では暗号化されます。

一部のWebサイトでは、Torからのアクセスを禁じているサーバーもあるため、アクセスできない場合もあります。

また、Onion ドメインにアクセスできる状態にもなるため注意してください。

Tor で Torrent を使用しないでください。大きくプライバシーを低下させます。

まとめ

Automate でも、Orbot や、Shell command をうまく使うことによって、自動化から Tor を介した通信する事ができます。

今回は、インターネット上にあるファイルをダウンロードする方法を解説しましたが、他にもいろいろなことができます。

ただここでは解説が大変なのでまたいつか。。

それでは。


インデックスに戻る
Automate 覚書のホームに戻る
このサイトのホームに戻る