Torget (tget)
Torget, or tget
for short, is a http(s) file downloader for Tor made by thatsn0tmysite (a.k.a. n0tme).
Where tget
“shines” over other tools is its (ab)use of bandwith, it spawns multiple Tor instances, it allows downloads of multiple files over multiple Tor clients, avoiding saturating the bandwith with concurrent downloads.
This allows for faster parallel downloads and a more total (theorical) bandwith.
Not the most novel (nor elegant) technique but… meh.
“Great for your daily dataleaks dumps (or anything else you use Tor for!).”
- Someone’s mom, probably.
This tool makes use of the handy bine and the fancy mpb libraries!
If you find this obnoxious thing useful leave me a star, fork and contribute, also consider donating to Tor!
Fancy gif
Current features / TODOs
- Basic functionality (multiple tor instances spawning)
- Download from URLs or files
- Allow download resume
- Custom headers/cookies
- Fancy progress bars
- Better/moar colors logging (use Tor colors)
- Onion themed logo
- Refactor code out of
cmd/root.go
(SOME code refactored) - Tests
- Insert fancy benchmark comparison gif to readme
Build
To build simply git clone
this repo and run this from torget’s folder:
mkdir bin
go build -o bin/tget
Usage
Torget is a Tor aware file downloader which uses multiple Tor instances to try to use all available bandwidth.
Made by thatsn0tmysite (aka n0tme) | Blog: https://thatsn0tmy.site
Usage:
tget [flags] <url|file> [...url|file]
Flags:
--concurrency int concurrency level (default 10)
-c, --conf string .torrc template file to use
--continue attempt to continue a previously interrupted download
-b, --cookies string cookie(s) to include in all requests
-d, --data string body of request to send
-f, --follow-redirect follow HTTP redirects
-F, --from-file download from files instead of urls
-H, --header strings header(s) to include in all requests
-h, --help help for tget
--host string host running Tor (default "127.0.0.1")
-n, --instances int number of Tor instances to use (default 5)
--keep-alive do not close Tor instances when done
-l, --log-path string path to save logs at
-X, --method string HTTP method to use (default "GET")
-o, --out-path string path to save downloaded files in (default "/home/n0tme/Documents/Projects/tget")
-O, --ovewrite overwrite file(s) if they already exist
-p, --ports uints ports to for Tor to listen on (default [])
-R, --reuse-instances do not spawn new instances, assume they are already open (implies --keep-alive)
-S, --socks-version string socks version to use (default "socks5")
--test-domain string website to use while testing if Tor is up (default "https://thatsn0tmy.site")
-T, --timeout int max time to wait for Tor before canceling (0: no timeout)
-t, --tor-path string path to Tor binary (default "/usr/bin/tor")
-k, --unsafe-tls skip TLS certificates validation
-U, --useragent string useraget to use when sending requests (default "tget/v0.3")
-v, --verbose be (very) verbose
Contribution
Any contribution is welcome, so feel free to open issues and suggest features/fixes. Also, as usual: “Sorry for the messy code”… I’ll clean it up eventually.