tor-dl

command module
v0.0.0-...-2195212 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 7, 2025 License: GPL-3.0 Imports: 15 Imported by: 0

README

tor-dl

tor-dl is a tool to download large files over a locally installed Tor client by aggressively discovering a pool of fast circuits and using them in parallel. With slow servers, this strategy bypasses per-IP traffic shaping, resulting in much faster downloads. Onion services are fully supported.

tor-dl is based on the work-in-progress 2.0 version of torget by Michał Trojnara. The two most impactful updates are:

  • Specify download destination folders and/or filenames
  • Download multiple files

Building From Source

$ git clone https://github.com/BryanCuneo/tor-dl.git
[...]
$ cd tor-dl
$ go build tor-dl.go

Using

View help page
$ ./tor-dl -h
tor-dl -  fast large file downloader over locally installed Tor
Copyright © 2025 Bryan Cuneo <https://github.com/BryanCuneo/tor-dl/>
Based on torget by Michał Trojnara <https://github.com/mtrojnar/torget>
Licensed under GNU GPL version 3 <https://www.gnu.org/licenses/>

Usage: tor-dl [FLAGS] {file.txt | URL [URL2...]}
  -circuits, -c int
        Concurrent circuits. (default 20)
  -destination, -d string
        Output directory. (default current directory)
  -force bool
        Will create parent folder(s) and/or overwrite existing files.
  -min-lifetime, -l int
        Minimum circuit lifetime (seconds). (default 10)
  -name, -n string
        Output filename. (default filename from URL)
  -tor-port, -p int
        Port your Tor service is listening on. (default 9050)
  -verbose, -v
        Show diagnostic details.
Download a file to the current directory
$ ./tor-dl "https://archive.org/download/grimaces-birthday-game/Grimace%27s%20Birthday%20%28World%29%20%28v1.7%29%20%28Aftermarket%29%20%28Unl%29.gbc"
Output file: Grimace's Birthday (World) (v1.7) (Aftermarket) (Unl).gbc
Download length:   1.00 MiB
Download completed in 20s
Specify a destination directory
$ ./tor-dl -destination "/isos" "https://cdimage.ubuntu.com/kubuntu/releases/24.10/release/kubuntu-24.10-desktop-amd64.iso"
Output file: /isos/kubuntu-24.10-desktop-amd64.isoDownload length:   4.36 GiB
Download completed in 5m43s
Specify a new name for the file
$ ./tor-dl -name "haiku-beta5-x86.iso" "https://mirrors.rit.edu/haiku/r1beta5/haiku-r1beta5-x86_gcc2h-anyboot.iso"
Output file: haiku-beta5-x86.iso
Download length:   1.38 GiB
Download completed in 1m47s
The -force flag

Use the -force flag to create parent directories and/or overwrite existing files

$ ./tor-dl -force -destination "/movies/Big Buck Bunny - Sunflower version (2013)" -name "Big Buck Bunny - Sunflower Version (2013).mp4" "http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_native_60fps_normal.mp4"
Output file: /movies/Big Buck Bunny - Sunflower version (2013)/Big Buck Bunny - Sunflower Version (2013).mp4
Download length: 793.33 MiB
Download completed in 2m52s

If the destination directory is not found, the program will try downloading to the current directory instead.

WARNING: Unable to find destination "/movies/Big Buck Bunny - Sunflower version (2013)".
Trying current directory instead.

If the file already exists, you will receive an error.

ERROR: "/movies/Big Buck Bunny - Sunflower version (2013)/Big Buck Bunny - Sunflower Version (2013).mp4" already exists.
exit status 1

Downloading Multiple Files

With multiple URLs as arguments

You may pass more than one URL to tor-dl and download them all sequentially.

$ ./tor-dl -destination "/music" "https://archive.org/download/ca200_cjazz/ca200_Various__Clinical_Jazz_CD1.zip" "https://archive.org/download/ca200_cjazz/ca200_Various__Clinical_Jazz_CD2v.zip" "https://archive.org/download/ca200_cjazz/ca200_Various__Clinical_Jazz_CD3.zip"
Downloading 3 files.

[1/3] - https://archive.org/download/ca200_cjazz/ca200_Various__Clinical_Jazz_CD1.zip
Output file: /music/ca200_Various__Clinical_Jazz_CD1.zip
Download length: 169.00 MiB
Download completed in 1m16s

[2/3] - https://archive.org/download/ca200_cjazz/ca200_Various__Clinical_Jazz_CD2v.zip
Output file: /music/ca200_Various__Clinical_Jazz_CD2v.zip
Download length: 135.64 MiB
Download completed in 1m5s

[3/3] - https://archive.org/download/ca200_cjazz/ca200_Various__Clinical_Jazz_CD3.zip
Output file: /music/ca200_Various__Clinical_Jazz_CD3.zip
Download length: 145.64 MiB
Download completed in 1m15s
With a local text file

You may pass the path of a text file containing multiple URLs on each line to download them all sequentially.

/music/downloads.txt
https://archive.org/download/ca200_cjazz/ca200_Various__Clinical_Jazz_CD4.zip
https://archive.org/download/ca200_cjazz/ca200_Various__Clinical_Jazz_CD5.zip
https://archive.org/download/ca200_cjazz/ca200_Various__Clinical_Jazz_CD6.zip
Run tor-dl
$ tor-dl -destination "/music" "/music/downloads.txt"
Downloading 3 files.

[1/3] - https://archive.org/download/ca200_cjazz/ca200_Various__Clinical_Jazz_CD4.zip
Output file: /music/ca200_Various__Clinical_Jazz_CD4.zip
Download length: 155.83 MiB
Download completed in 1m13s

[2/3] - https://archive.org/download/ca200_cjazz/ca200_Various__Clinical_Jazz_CD5.zip
Output file: /music/ca200_Various__Clinical_Jazz_CD5.zip
Download length: 152.86 MiB
Download completed in 1m4s

[3/3] - https://archive.org/download/ca200_cjazz/ca200_Various__Clinical_Jazz_CD6.zip
Output file: /music/ca200_Various__Clinical_Jazz_CD6.zip
Download length: 159.02 MiB
Download completed in 1m9s

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL