feat: URL-first CLI + auto-setup for new targets

- python -m scanner https://domain.de scan  (URL as first positional arg)
- On first use, the domain directory is auto-created from the
  meine-seite.de template with all paths and target URL substituted
- scanner.sh wrapper script for convenient ./scanner.sh usage
- --config syntax fully preserved (cron jobs unchanged)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-06-12 16:29:43 +02:00
commit fcbccce422
4 changed files with 104 additions and 19 deletions

View file

@ -10,19 +10,24 @@ unbefugte Manipulationen. Der Scanner läuft lokal im Verantwortungsbereich des
Sie brauchen kein IT-Wissen. Das Programm zeigt eine **Ampel** und erklärt alles in
einfachen Worten.
**Schritt 1 — Erststand speichern** (einmalig, wenn die Website in Ordnung ist):
**Schritt 1 — Ersten Scan durchführen** (Scanner legt das Zielverzeichnis automatisch an):
```
python -m scanner approve --all --note "Erststand geprüft"
python -m scanner https://ihre-website.de init
```
**Schritt 2 — täglich prüfen** (am besten automatisch per Cron, siehe Abschnitt 10):
**Schritt 2 — Erststand speichern** (einmalig, wenn die Website in Ordnung ist):
```
python -m scanner scan
python -m scanner https://ihre-website.de approve --all --note "Erststand geprüft"
```
**Schritt 3 — bei 🟡 oder 🔴 nachschauen:**
**Schritt 3 — täglich prüfen** (am besten automatisch per Cron, siehe Abschnitt 10):
```
python -m scanner report
python -m scanner https://ihre-website.de scan
```
**Bei 🟡 oder 🔴 nachschauen:**
```
python -m scanner https://ihre-website.de report
```
Was die Ampel bedeutet:
@ -105,29 +110,37 @@ source venv/bin/activate
pip install -r requirements.txt
```
Alle Befehle müssen aus dem Projektverzeichnis ausgeführt werden (dort liegt `config.yaml`).
Alle Befehle müssen aus dem Projektverzeichnis ausgeführt werden.
---
## 3. Erstinbetriebnahme
Die URL-Syntax legt das Zielverzeichnis beim ersten Aufruf **automatisch** an —
kein manuelles Anlegen von Verzeichnissen oder Konfigurieren von Pfaden nötig.
### Schritt 1: Ersten Crawl durchführen
```bash
python -m scanner init
python -m scanner https://ihre-website.de init
```
Der Scanner legt beim ersten Aufruf automatisch `ihre-website.de/` mit einer
angepassten `config.yaml` an und beginnt sofort mit dem Crawl.
Die Ausgabe zeigt:
- alle gefundenen internen URLs
- alle externen Domains (mit Hinweis, ob in der Whitelist)
- potenzielle Auffälligkeiten (Hidden Content, Meta-Refresh, verdächtige Scripts)
- Crawl-Fehler (Seiten, die nicht erreichbar waren)
Außerdem erscheint ein Hinweis, welche Zeilen in `.gitignore` noch einzutragen sind.
### Schritt 2: Ausgabe manuell prüfen
Wichtig vor dem nächsten Schritt:
- Alle externen Domains prüfen. Legitime Domains in `config/allowed_external.yaml` eintragen
(siehe [Abschnitt 13](#13-externe-domains-verwalten)).
- Alle externen Domains prüfen. Legitime Domains in `ihre-website.de/config/allowed_external.yaml`
eintragen (siehe [Abschnitt 13](#13-externe-domains-verwalten)).
- Auffälligkeiten im Browser nachschauen.
### Schritt 3: Baseline freigeben
@ -135,7 +148,7 @@ Wichtig vor dem nächsten Schritt:
Nur wenn alles sauber ist:
```bash
python -m scanner approve --all --note "Initiale Baseline, geprüft am $(date +%Y-%m-%d)"
python -m scanner https://ihre-website.de approve --all --note "Initiale Baseline, geprüft am $(date +%Y-%m-%d)"
```
Ab jetzt ist der tägliche Betrieb möglich.