HeadSeaker

GitHubPythonBatchfile
Sync GitHub: 9/15/2026

HeadSeeker

A cyberpunk-styled, interactive TUI for scanning HTTP security headers straight from your terminal.

Python Rich License


What it does

HeadSeeker performs a single HTTP GET against a target URL, inspects the response headers, and grades the site's security posture from A+ to F based on the presence and correctness of the most impactful security headers.

It then drops you into an interactive dashboard where you can navigate the missing headers with your arrow keys and read, for each one:

  • a plain-English description of the vulnerability,
  • the risk level (High / Medium / Low),
  • copy-paste remediation snippets for Nginx and Apache.

The whole report can be exported to JSON with a single keypress.

Headers checked

HeaderWeightRisk
Content-Security-Policy25High
Strict-Transport-Security20High
Permissions-Policy15Medium
X-Frame-Options10Medium
X-Content-Type-Options10Medium
Referrer-Policy10Low

The final score is a weighted percentage mapped to a letter grade:

ScoreGrade
95-100A+
90-94A
80-89B
70-79C
60-69D
40-59E
0-39F

Screens

  1. Banner screen - neon-green ASCII art + URL prompt.
  2. Loading state - animated spinner while the HTTP request is in flight.
  3. Dashboard - grade panel, headers table, contextual recommendation panel.
  4. Export - JSON dump of the full scan.

Controls

KeyAction
Up / Down (or k / j)Navigate the header list
SExport the report to headseeker-report.json
Q or Ctrl+CQuit

Installation

git clone https://github.com/<your-user>/HeadSeaker.git
cd HeadSeaker
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux / macOS
source .venv/bin/activate

pip install -r requirements.txt

Usage

One-click launcher (Windows)

Just double-click start.bat (or run it from a terminal). It will:

  1. detect whether a local .venv exists;
  2. if not, ask Y/N whether to create one — Y builds the venv and installs requirements.txt into it;
  3. if you answer N, it verifies the dependencies on the system Python and offers to install them globally if any are missing;
  4. once everything is ready, it launches headseeker.py.
start.bat

Manual run

python headseeker.py

You'll be prompted for a target URL (e.g. https://example.com). The https:// prefix is added automatically if omitted. After the scan completes you land in the interactive dashboard.

Non-interactive scan (scripting)

HeadSeeker is also importable as a library:

from headseeker import scan_url, export_report

report = scan_url("https://example.com")
print(report.grade, report.score)
export_report(report, "report.json")

Exported JSON format

headseeker-report.json contains the full scan:

{
  "url": "https://example.com",
  "scanned_at": "2026-09-04T12:00:00+00:00",
  "status_code": 200,
  "score": 35,
  "grade": "E",
  "headers": [
    {
      "name": "Content-Security-Policy",
      "present": false,
      "value": null,
      "weight": 25,
      "risk": "High",
      "summary": "...",
      "missing": "...",
      "nginx": "add_header Content-Security-Policy ...",
      "apache": "Header always set Content-Security-Policy ..."
    }
  ]
}

Design

  • Palette: neon green #39FF14, cyan #00E5FF, red #FF3B3B, orange #FF8C00 - a clean cyberpunk / hacker aesthetic.
  • Rendering: rich Live panels with a full-screen layout.
  • Input: readchar for raw, cross-platform single-keypress navigation.

Project layout

HeadSeaker/
├── headseeker.py       # single-file TUI application
├── start.bat           # Windows one-click launcher (venv + deps + run)
├── requirements.txt
└── README.md

Disclaimer

HeadSeeker only performs a single, passive GET request against a target you control or are authorised to test. It does not perform any active exploitation, fuzzing, or intrusive scanning. Always obtain permission before scanning third-party hosts.

License

MIT - see LICENSE for details.