Whackermelon
projets / checkermelon

CheckerMelon

Python github ↗

Scanner d'en-têtes de sécurité HTTP (OWASP) : validation des valeurs, cookies, CORS, scoring A+ à F, GUI + CLI, exports SARIF/CI.

CheckerMelon logo

OWASP Security Header Checker — by whackermelon, forked and heavily extended from javelinsoft’s OWASP-Security-Header-Checker-Tool.

CheckerMelon assesses the HTTP security response headers of web applications against the OWASP recommended security headers. Unlike a simple presence check, it validates header values, analyzes cookies, detects duplicate / deprecated / information-disclosure headers, and computes a security grade (A+ to F). It works from a GUI or from the command line (CI/CD friendly), and can scan pages behind authentication via custom headers or a full raw HTTP request replay (Burp-style).

Features

Screenshots

CheckerMelon GUI (dark theme)

The GUI after a scan: security grade, per-category counters, color-coded results (missing headers, weak values, cookies, disclosure, CORS) and one-click exports.

Installation

git clone https://github.com/whackermelon/CheckerMelon.git
cd CheckerMelon
pip install -r requirements.txt

Optional, for a dark-themed GUI: pip install ttkbootstrap

Usage

GUI

python CheckerMelon.py

CLI

# Single URL, authenticated, JSON report
python CheckerMelon.py https://example.com -H "Cookie: session=abc123" --json report.json

# Replay a raw request captured in Burp (stdin also works with --request -)
python CheckerMelon.py --request burp_capture.txt
# Same capture, replayed against a staging server instead:
python CheckerMelon.py https://staging.example.com --request burp_capture.txt

# Verbose, no crawling, HTML report
python CheckerMelon.py https://example.com --no-crawl -v --html report.html

# Batch scan with a CI gate (exit code 1 if any score is below 70)
python CheckerMelon.py --batch urls.txt --fail-under 70 --csv results.csv

# SARIF export for GitHub Code Scanning (see examples/checkermelon-ci.yml)
python CheckerMelon.py https://example.com --no-crawl --sarif results.sarif

# Save the scan to the local history database, then compare scans over time
python CheckerMelon.py https://example.com --history
python CheckerMelon.py --diff https://example.com

# Use a named profile from checkermelon.toml (tokens, target, options)
python CheckerMelon.py --profile admin

# Update the header lists from the project repository
python CheckerMelon.py --update-lists

# Through Burp, ignoring its self-signed certificate
python CheckerMelon.py https://example.com --proxy http://127.0.0.1:8080 -k

Run python CheckerMelon.py --help for the full option list.

Configuration file

Copy checkermelon.toml.example to checkermelon.toml (gitignored, since profiles typically contain session cookies or tokens). [defaults] applies to both the GUI and the CLI, and named [profiles.*] can be selected with --profile NAME. CLI flags always override the config file.

Configuration files

Only scan targets you own or are explicitly authorized to test. You are responsible for how you use this tool.

Contributing

Contributions are welcome! If you have suggestions for improvements or new features, please open an issue or submit a pull request.

← tous les projets