Current section
Files
Jump to
Current section
Files
README.md
[](https://gleam.run/)
[](LICENSE.txt)
# Fuzzy
Fuzzy is a concurrent web-content fuzzer written in [Gleam](https://gleam.run/) using BEAM processes.
It reads entries from a provided wordlist, inserts each entry into a target URL, sends concurrent HTTP requests, and prints responses matching the provided status codes.
> [!WARNING]
> Only use Fuzzy against systems you own or have permission to test.
## Features
- Concurrent HTTP requests using BEAM processes
- Configurable concurrency and request timeout
- Status-code filtering
## Requirements
Fuzzy currently targets only Erlang and has been tested with Gleam 1.17
## Installation
Clone the repository:
```bash
git clone https://github.com/MasMariusD/fuzzy.git
cd fuzzy
```
Run it directly with Gleam:
```bash
gleam run -- --help
```
Alternatively, build a standalone single-file Erlang escript:
```bash
gleam export escript
./fuzzy --help
```
The escript still requires Erlang to be installed.
## Usage
```bash
./fuzzy \
--target=<URL> \
--wordlist=<PATH> \
[--status=<CODES>] \
[--concurrency=<NUMBER>] \
[--timeout=<MILLISECONDS>]
```
Example against a locally hosted application:
```bash
./fuzzy \
--target=http://localhost:8080/pages/FZY \
--wordlist=common.txt \
--status=200,301,302,401,403 \
--concurrency=50 \
--timeout=3000
```
### Target Placeholder
Use `FZY` in the target URL to control where each wordlist entry is inserted:
`http://localhost:8080/api/FZY/details`
If the target does not contain `FZY`, Fuzzy appends `/FZY` to the target URL automatically.
`http://localhost:8080`
becomes:
`http://localhost:8080/FZY`
### Options
| Option | Required | Default | Description |
| ------ | -------: | ------: | --------- |
| --target | Yes | - | The target URI. Use FZY as the wordlist placeholder |
| --wordlist | Yes | - | Path to a newline-separated wordlist |
| --status | No | All | Comma-separated status response codes to print |
| --concurrency | No | 50 | Number of concurrent requests |
| --timeout | No | 3000 | Request timeout in milliseconds |
| --help | No | - | Display command help |
## Wordlists
Fuzzy accepts any text file containing one entry per line. Empty lines are ignored.
The repository includes the `common.txt` wordlist from the [SecLists](https://github.com/danielmiessler/SecLists) project. See [THIRD_PARTY_NOTICES.md](https://github.com/MasMariusD/fuzzy/blob/main/THIRD_PARTY_NOTICES.md).
## Current limitations
Fuzzy 0.1.0 is still an early release. It currently:
- Sends GET requests only
- Filters results purely by HTTP status codes
- Does not support custom headers or authentication
- Does not perform recursive discovery
These features are planned as future expansions.
## License
Fuzzy is available under the [MIT license](LICENSE.txt).