Indexes open directories
GPL-3.0 License
Indexes open directories listings in 130+ supported formats, including FTP(S), Google Drive, Bhadoo, GoIndex, Go2Index (alternatives), Dropbox, Mediafire, GoFile, GitHub.
Written in C# with .NET (Core), which means it is cross platform!
Downloading is not (yet) implemented, but is already possible when you use the resulting file into another tool (for most of the formats).
Downloading with wget:
wget -x -i theurlsfile.txt
Downloading with aria2c (Does not support directory structure..):
aria2c -i theurlsfile.txt
If you have improvements, supply me with a pull request! If you have a format not yet supported, please let me know.
For builds (64-bit) for Windows, Linux and Mac, or ARM/ARM64 builds for Pi:
https://github.com/KoalaBear84/OpenDirectoryDownloader/releases
When using the self-contained releases you don't need to install the .NET (Core) Runtime.
When you are NOT using the self-contained releases, you need to install the latest/current Runtime version of .NET 8:
https://dotnet.microsoft.com/download/dotnet/8.0/runtime
Command line parameters:
Short | Long | Description |
---|---|---|
-u |
--url |
Url to scan |
-t |
--threads |
Number of threads (default 5) |
-o |
--timeout |
Number of seconds for timeout |
-w |
--wait |
Number of seconds to wait between calls (when single threaded is too fast..) |
-q |
--quit |
Quit after scanning (No "Press a key") |
-c |
--clipboard |
Automatically copy the Reddits stats once the scan is done |
-j |
--json |
Save JSON file |
-f |
--no-urls |
Do not save URLs file |
-r |
--no-reddit |
Do not show Reddit stats markdown |
-l |
--upload-urls |
Uploads urls file |
-e |
--exact-file-sizes |
Exact file sizes (WARNING: Uses HEAD requests which takes more time and is heavier for server) |
--fast-scan |
Only use sizes from HTML, no HEAD requests, even if the approx. size cannot be extracted from the HTML | |
-s |
--speedtest |
Does a speed test after indexing |
-a |
--user-agent |
Use custom default User Agent |
--username |
Username | |
--password |
Password | |
--github-token |
GitHub Token | |
-H |
--header |
Supply a custom header to use for each HTTP request. Can be used multiple times for multiple headers. See below for more info. |
--output-file |
Output file to use for urls file | |
--proxy-address |
Proxy address, like "socks5://127.0.0.1:9050" (needed for .onion) | |
--proxy-username |
Proxy username | |
--proxy-password |
Proxy password | |
--no-browser |
Disallow starting Chromium browser (for Cloudflare) |
OpenDirectoryDownloader.exe --url "https://myopendirectory.com"
./OpenDirectoryDownloader --url "https://myopendirectory.com"
If you want to learn more or contribute, see the following paragraphs!
Headers need to be provided in the following format:
<Header Name>: <Header Value>
This syntax is compatible with e.g. cURL, so that you can copy the headers from a cURL command and re-use them with OpenDirectoryDownloader.
This means you can easily "fake" a browser request:
F12
or CTRL
+ SHIFT
+ i
)Network
tabCopy > Copy as cURL (bash)
(might be called differently, depending on your browser)-H '<something>' -H '<something else>'
). Copy only this part of the command and append it to your OpenDirectoryDownloader command, like so: OpenDirectoryDownloader --url "https://myopendirectory.com" -H 'header-name-1: header-value-1' -H 'header-name-2: header-value-2' ...
--url
option to use the prompt instead.Setting some options like --username
or --user-agent
might override some headers, as explicit options take precedence. Option order does not matter (this applies to OpenDirectoryDownloader in general).
When you want to copy (C
key or -c
flag) the stats at the end on Linux you need to have xclip installed.
On some distros you need extra dependencies. For Alpine: https://docs.microsoft.com/en-us/dotnet/core/install/linux-alpine
For others see: https://docs.microsoft.com/en-us/dotnet/core/install/linux
If you received errors like this, please apply the registry file "Enable TLS 1.3.reg" from this site.
System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
---> System.Security.Authentication.AuthenticationException: Authentication failed because the remote party sent a TLS alert: 'ProtocolVersion'.
---> System.ComponentModel.Win32Exception (0x80090326): The message received was unexpected or badly formatted.
EXPERIMANTAL!! READ THIS FIRST!
IT WILL NOT ALWAYS WORK!
There is experimental support for Cloudflare. When it detects a Cloudflare issue it will download a Chromium browser, start it, in which the Cloudflare protection can be solved. Sometimes this is a captcha which the user (you) needs to solve. For each browser session you have 60 seconds to complete. After that the browser will be killed and you can retry on next request.
Cloudflare does somehow detect that it is not the normal Chromium/Chrome browser and therefore it sadly will not always work. A good tip is move your mouse as soon as possible in the browser.
Sometimes it fails and pops up a browser for every request, and also kills it almost immediately when Cloudflare sees that there is no problem with the session. If this happens, kill the indexer!
If anybody have more info how to get Cloudflare to work better, let me know!
By default GitHub has a rate limit of 60 request per hour, which is enough for 20 repositories with less than 100.000 items. You can increase this limit to 5000 per hour by creating a (personal) token:
Every release will automatically push an image to the Docker Hub:
https://hub.docker.com/repository/docker/koalabear84/opendirectorydownloader
Run it like:
docker run --rm -v c:/Scans:/app/Scans -it koalabear84/opendirectorydownloader --quit --speedtest
It will save the URLs files onto C:\Scans (windows), or replace with a custom folder on other OS-ses.
* You can also run it without -v c:/scans:/app/Scans
if you don't want to save the results on your host.
--proxy-address
parameterOpenDirectoryDownloader.exe --url "http://*.onion/" --proxy-address "socks5://127.0.0.1:9050"
git clone https://github.com/KoalaBear84/OpenDirectoryDownloader
cd OpenDirectoryDownloader/src
dotnet build .
cd OpenDirectoryDownloader/bin/Debug/net7.0
./OpenDirectoryDownloader --url "https://myopendirectory.com"
For Linux (Might not be needed since .NET 7): Then, if you need to package it into a binary, you can use warp-packer
When you have cloned the code, you can also run it without the SDK. For that, download the "Runtime" and do "dotnet run .
" instead of build.
For Google Drive scanning you need to get a Google Drive API credentials file, it's free!
You can use a many steps manual option, or the 6 steps 'Quickstart' workaround.
Manual/customized:
Wow, they really made a mess of this..
Alternative method (easier):
This will 'abuse' a 'Quickstart' project.
On the first use, you will get a browser screen that you need to grant access for it, and because we haven't granted out OAuth consent screen (This app isn't verified), we get an extra warning. You can use the "Advanced" link, and use the "Go to yourappname (unsafe)" link.
If you like OpenDirectoryDownloader, please consider supporting me!