ffd is a simple command-line tool for downloading files quickly using multiple HTTP byte ranges when supported by the server.
- Built-in proxy — Use FFD as a local HTTP forward proxy.
- Support for custom HTTP headers and cookies, including Netscape-format cookie files.
Linux / macOS
curl -fsSL https://raw.githubusercontent.com/hamidrezaesh/ffd/main/scripts/install.sh | shWindows
irm https://raw.githubusercontent.com/hamidrezaesh/ffd/main/scripts/install.ps1 | iexFor detailed instructions and alternative installation methods, see docs/INSTALLATION.md.
ffd https://example.com/file.zipffd automatically detects the file metadata and, when supported, downloads the file using multiple HTTP byte ranges.
ffd can also run as a local HTTP forward proxy.
Start the proxy:
ffd proxyBy default, the proxy listens on 127.0.0.1:8000
You can change the port with:
ffd proxy --port 9000Then configure your browser or another HTTP client to use:
HTTP Proxy: 127.0.0.1:8000
HTTPS Proxy: 127.0.0.1:8000
For detailed information about using ffd, including commands, options, and examples, see docs/USAGE.md.
When the server supports HTTP byte-range requests, ffd divides the file into multiple ranges and downloads them concurrently.
If the server does not support range requests, ffd automatically falls back to a single download stream.
ffd/
├── .github/
│ └── workflows/
├── cmd/
├── internal/
│ ├── config/
│ ├── disk/
│ ├── engine/
│ ├── formatter/
│ ├── metadata/
│ ├── proxy/
│ ├── scheduler/
│ ├── tracker/
│ └── validator/
│ └── version/
├── scripts/
├── docs/
├── test/
├── .gitignore
├── .goreleaser.yaml
├── main.go
├── go.mod
├── CONTRIBUTING.md
├── go.sum
├── README.md
└── LICENSE
For detailed information about the project structure, packages, files, and how ffd works internally, see docs/ARCHITECTURE.md.
ffd is licensed under the Apache 2.0 License.
See LICENSE for the full license text.
Made by Hamidreza.