Multifunctional tool for HTTP reconnaissance, web crawling and web directory bruteforce.
Project description
Ansferatu
Multifunctional tool for HTTP reconnaissance, web crawling and web directory bruteforce. Based on PSpider.
Features
- Fast multi-URL crawling
- Fast multi-URL directory bruteforce
- Discover new subdomains without DNS bruteforce (e.g.
https://example.com→ many*.example.comhosts) - Optional headless browsing and automatic form fill-up (via Playwright)
- JSONL output (Nuclei/proxify-compatible)
Installation
Ansferatu is a regular Python package and requires Python 3.8+.
From PyPI:
pip3 install ansferatu
From source / GitHub:
pip3 install git+https://github.com/frostbits-security/ansferatu.git
# or, from a local checkout:
pip3 install .
Headless / form-filling support is optional. The --headless and --fill-forms
modes rely on Playwright. Install the extra and
download the Chromium runtime:
pip3 install 'ansferatu[headless]'
playwright install chromium
Installing the package exposes an ansferatu console command (equivalent to
python3 -m ansferatu).
How to run
Run via the ansferatu command. Use ansferatu --help (or ansferatu crawl --help)
to see all options.
crawl
Crawl one or more web sites. The main parameter is --limit (requests per subdirectory).
ansferatu crawl --url https://example.com -o ./results/ --limit 1
crawl --headless
Same crawl, but with Playwright headless extraction for qualifying pages.
Requires the headless extra (pip install 'ansferatu[headless]' && playwright install chromium).
ansferatu crawl --headless --url https://example.com -o ./results/
crawl --fill-forms
Extends the headless crawl with form detection and interaction: detects <form>
elements, fills fields with smart defaults (email, password, search, etc.), submits
them, and captures the resulting responses and new URLs. Implies --headless.
ansferatu crawl --fill-forms --url https://example.com -o ./results/
brute
Classic web directory bruteforce. Needs a wordlist.
ansferatu brute --url https://example.com -w ./wordlists/fuzz_big.txt -o ./results/
Use as a library
The package can be imported into other Python tools:
from ansferatu import common_crawler, common_brute_from_file
common_crawler(
url_list=["https://example.com"],
scope=["example.com"],
exclude_codes_list=[403, 404, 401],
visit_count_limit=10,
max_deep=2,
threads=10,
output_file="results.jsonl",
)
For lower-level control, build the spider directly:
from ansferatu.spider import WebSpider, TaskFetch
Docker
Build the image:
docker build -t ansferatu .
Run the container (the image's entrypoint is the ansferatu command):
docker run --rm -it -v /tmp/ansferatu_out:/ansferatu/results ansferatu \
crawl --url https://example.com -o /ansferatu/results/ --limit 1
Development
Editable install (source changes are picked up immediately):
pip3 install -e '.[headless,dev]'
Run the test suite:
pytest
Building & publishing to PyPI
The project is configured with pyproject.toml (PEP 621). Build the distribution
artifacts (source distribution + wheel):
pip3 install build
python3 -m build # writes dist/ansferatu-<version>.tar.gz and .whl
Validate and upload with Twine:
pip3 install twine
twine check dist/*
# Test upload first (recommended): https://test.pypi.org
twine upload --repository testpypi dist/*
# Real upload
twine upload dist/*
Notes:
- Bump
versioninpyproject.toml(and__version__inansferatu/__init__.py) before each release; PyPI rejects re-uploads of an existing version. - Uploading requires a PyPI account and an API token (configured via
~/.pypircor theTWINE_USERNAME=__token__/TWINE_PASSWORD=<token>environment variables).
Roadmap
- Dynamic dictionary generation for bruteforce
- Improved deduplication (Simhash / page-hash similarity)
- HTML reports alongside JSONL output
- Collect query parameters (GET and POST)
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ansferatu-0.1.1.tar.gz.
File metadata
- Download URL: ansferatu-0.1.1.tar.gz
- Upload date:
- Size: 164.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c866d95396c431648c258ea8cbebb90489359b636ffc2256e64d7c295e0c2d9d
|
|
| MD5 |
c36829875cdbdcd20c8dfce0e8274ce7
|
|
| BLAKE2b-256 |
d5f240efce515f26d24ac73f4510ffaf24b74f63d14b3a17ac4497630e801be6
|
File details
Details for the file ansferatu-0.1.1-py3-none-any.whl.
File metadata
- Download URL: ansferatu-0.1.1-py3-none-any.whl
- Upload date:
- Size: 172.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7864f62508afbd19a748c63ccc44ca6988ef01113376dfbc19deaef4c6fc776
|
|
| MD5 |
dc139c818b13a78a8cca64571bd32798
|
|
| BLAKE2b-256 |
c2660d1af3688b3c9cd381e17fdf368ea93e5b966fe66c3a632e303713ca0b58
|