wafw00f - Web Application Firewall Fingerprinting Toolkit

raw JSON →
2.4.2 verified Fri May 01 auth: no python

wafw00f (v2.4.2) identifies and fingerprints Web Application Firewall (WAF) products protecting a website. It sends a set of HTTP requests and analyzes responses to detect over 200 WAFs. The library is actively maintained with regular releases, typically several per year.

pip install wafw00f
error ModuleNotFoundError: No module named 'wafw00f'
cause The library is not installed or installed in a different environment.
fix
Run 'pip install wafw00f' in your active environment.
error AttributeError: module 'wafw00f' has no attribute 'WafW00F'
cause Attempting to use a wrong import or referring to the class incorrectly.
fix
Use 'from wafw00f import WafW00F' and then instantiate with 'WafW00F(url)'.
error TimeoutError: The read operation timed out
cause Target server is slow and the default timeout may not be respected in older versions.
fix
Upgrade to wafw00f >=2.4.1 and/or pass a timeout parameter: WafW00F(url, timeout=10).
deprecated The use of setup.py is deprecated; installation via pip works without it.
fix Use pip install wafw00f instead of any manual setup.py invocations.
gotcha The main function is named identwaf (not identify_waf). The W in WafW00F is uppercase.
fix Use waf.identwaf() correctly.
gotcha The WafW00F constructor can hang indefinitely on slow-streaming servers if timeout is not set explicitly.
fix Upgrade to >=2.4.1 where timeout enforcement is fixed.
breaking Python 2 support removed; Python >=3.10 required.
fix Use Python 3.10 or newer.

Simple example to detect WAF on a target URL.

from wafw00f import WafW00F

waf = WafW00F('https://example.com')
result = waf.identwaf()
if result:
    print(f"WAF detected: {result.waf})")
else:
    print("No WAF detected or could not be identified.")