Skip to main content

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.com hosts)
  • 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 version in pyproject.toml (and __version__ in ansferatu/__init__.py) before each release; PyPI rejects re-uploads of an existing version.
  • Uploading requires a PyPI account and an API token (configured via ~/.pypirc or the TWINE_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ansferatu-0.1.1.tar.gz (164.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ansferatu-0.1.1-py3-none-any.whl (172.1 kB view details)

Uploaded Python 3

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

Hashes for ansferatu-0.1.1.tar.gz
Algorithm Hash digest
SHA256 c866d95396c431648c258ea8cbebb90489359b636ffc2256e64d7c295e0c2d9d
MD5 c36829875cdbdcd20c8dfce0e8274ce7
BLAKE2b-256 d5f240efce515f26d24ac73f4510ffaf24b74f63d14b3a17ac4497630e801be6

See more details on using hashes here.

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

Hashes for ansferatu-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e7864f62508afbd19a748c63ccc44ca6988ef01113376dfbc19deaef4c6fc776
MD5 dc139c818b13a78a8cca64571bd32798
BLAKE2b-256 c2660d1af3688b3c9cd381e17fdf368ea93e5b966fe66c3a632e303713ca0b58

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page