docs: add example.com template for new target websites
Heavily commented config.yaml and config/ directory serve as a copy-paste starting point for any new site to monitor. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
c9bfba1701
commit
e6dbab3ebf
4 changed files with 199 additions and 0 deletions
165
example.com/config.yaml
Normal file
165
example.com/config.yaml
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
# ============================================================
|
||||
# Integrity Scanner — Konfigurationsvorlage
|
||||
# ============================================================
|
||||
# Verwendung:
|
||||
# 1. Dieses Verzeichnis kopieren:
|
||||
# cp -r example.com meine-seite.de
|
||||
# 2. In meine-seite.de/config.yaml alle Stellen mit
|
||||
# "example.com" durch die echte Domain ersetzen.
|
||||
# 3. Verzeichnis in .gitignore eintragen (data/reports/logs).
|
||||
# 4. Erste Einrichtung:
|
||||
# python -m scanner --config meine-seite.de/config.yaml init
|
||||
# ============================================================
|
||||
|
||||
# --- Ziel-Website ---
|
||||
target: "https://example.com"
|
||||
|
||||
# User-Agent, mit dem der Scanner sich bei der Website meldet.
|
||||
# Bitte nicht auf einen Browser-Agent ändern — der Scanner soll erkennbar sein.
|
||||
user_agent: "integrity-scanner/1.0 (+security-monitoring)"
|
||||
|
||||
# Timeout in Sekunden pro HTTP-Anfrage
|
||||
request_timeout: 20
|
||||
|
||||
# --- Verzeichnisse (müssen absolut angegeben werden) ---
|
||||
# Pfad zum Projektverzeichnis anpassen!
|
||||
data_dir: "/home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten/example.com/data"
|
||||
reports_dir: "/home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten/example.com/reports"
|
||||
logs_dir: "/home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten/example.com/logs"
|
||||
config_dir: "/home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten/example.com/config"
|
||||
|
||||
# --- Crawl-Einstellungen ---
|
||||
crawl:
|
||||
# Maximale Anzahl Seiten pro Crawl (Schutz vor endlosen Websites)
|
||||
max_pages: 200
|
||||
|
||||
# Wartezeit zwischen zwei Seitenanfragen in Sekunden (Server schonen)
|
||||
delay_seconds: 1.0
|
||||
|
||||
respect_robots_txt: false
|
||||
|
||||
# Pfade, die vom Scan ausgeschlossen werden sollen.
|
||||
# Nützlich für Bereiche mit gewollt häufig wechselnden Inhalten,
|
||||
# z. B. RSS-Feeds, News-Archive, Nutzerprofile.
|
||||
# Beispiel: ["/rss/", "/feed/", "/news/archiv/", "/user/"]
|
||||
exclude_paths: []
|
||||
|
||||
# Dateiendungen, die nicht gecrawlt werden (Binärdateien)
|
||||
skip_extensions:
|
||||
- ".jpg"
|
||||
- ".jpeg"
|
||||
- ".png"
|
||||
- ".gif"
|
||||
- ".webp"
|
||||
- ".svg"
|
||||
- ".ico"
|
||||
- ".pdf"
|
||||
- ".zip"
|
||||
- ".woff"
|
||||
- ".woff2"
|
||||
- ".ttf"
|
||||
- ".otf"
|
||||
- ".eot"
|
||||
- ".mp4"
|
||||
- ".mp3"
|
||||
- ".webm"
|
||||
- ".avi"
|
||||
- ".mov"
|
||||
|
||||
# --- Bewertungsgewichte ---
|
||||
# Jedes Ereignis erhöht den Score. Ab 20 = gelb, ab 60 = rot.
|
||||
# Die Werte können hier für diese Website angepasst werden.
|
||||
scoring:
|
||||
new_external_domain: 50 # Neuer Verweis auf fremde Domain
|
||||
new_internal_url: 30 # Neue interne Seite aufgetaucht
|
||||
missing_internal_url: 20 # Bekannte Seite verschwunden
|
||||
hidden_content: 40 # Unsichtbarer Text/Link (display:none)
|
||||
unexpected_canonical: 35 # Canonical-Tag geändert
|
||||
meta_refresh: 40 # Automatische Weiterleitung eingebaut
|
||||
unexpected_jsonld: 35 # Unbekannter JSON-LD-Typ
|
||||
large_text_addition: 20 # Großer neuer Textblock (>200 Zeichen)
|
||||
new_inline_script_suspicious: 30 # Verdächtiges inline JavaScript
|
||||
comment_links: 25 # Link in HTML-Kommentar versteckt
|
||||
new_broken_link: 20 # Neuer kaputt interner Link
|
||||
suspicious_filename: 60 # Webshell-typischer Dateiname verlinkt
|
||||
cloaking_extra_link: 60 # Nur für Google-Bot sichtbarer Link
|
||||
cloaking_extra_text: 40 # Nur für Google-Bot sichtbarer Text
|
||||
cloaking_vary_ua: 25 # Server sendet verschiedene Inhalte je UA
|
||||
changed_script: 40 # JavaScript-Datei verändert
|
||||
changed_stylesheet: 30 # CSS-Datei verändert
|
||||
changed_asset: 20 # Bild/PDF/sonstige Datei verändert
|
||||
|
||||
thresholds:
|
||||
yellow: 20 # Ab diesem Score: Warnung (gelb) — Bitte prüfen
|
||||
red: 60 # Ab diesem Score: Alarm (rot) — Sofort prüfen
|
||||
large_text_block_chars: 200
|
||||
|
||||
# --- Wöchentliche Zusatzprüfungen ---
|
||||
# Laufen automatisch beim täglichen `scan` mit — kein separater Aufruf nötig.
|
||||
periodic_checks:
|
||||
enabled: true
|
||||
interval_days: 7
|
||||
cloak_check: true # Prüft ob Google andere Inhalte sieht als Besucher
|
||||
ext_links: true # Prüft ob externe Links noch erreichbar sind
|
||||
assets: true # Prüft ob CSS/JS/Bilder sich verändert haben
|
||||
|
||||
# --- E-Mail-Benachrichtigung ---
|
||||
# Passwort NIEMALS hier eintragen — nur als Umgebungsvariable:
|
||||
# export SCANNER_SMTP_PASSWORD="geheimesPasswort"
|
||||
alerting:
|
||||
min_level: "yellow" # "yellow" = bei Gelb und Rot mailen; "red" = nur bei Rot
|
||||
email:
|
||||
enabled: false # Auf true setzen wenn SMTP konfiguriert
|
||||
smtp_host: "mail.example.com"
|
||||
smtp_port: 587
|
||||
smtp_tls: true
|
||||
smtp_user: "scanner@example.com"
|
||||
smtp_password_env: "SCANNER_SMTP_PASSWORD"
|
||||
from: "scanner@example.com"
|
||||
to:
|
||||
- "admin@example.com"
|
||||
webhook:
|
||||
enabled: false
|
||||
url: "" # z.B. Slack-Webhook oder Telegram-Bot-URL
|
||||
|
||||
# --- Normalisierung ---
|
||||
# Elemente, die vor dem Vergleich aus dem HTML entfernt werden
|
||||
# (z. B. dynamische Datums-/Zeitanzeigen die sich täglich ändern).
|
||||
normalization:
|
||||
strip_html_comments: true
|
||||
collapse_whitespace: true
|
||||
ignore_selectors:
|
||||
# - "#last-modified" # Element mit dieser ID ignorieren
|
||||
# - ".timestamp" # Alle Elemente mit dieser CSS-Klasse ignorieren
|
||||
ignore_patterns:
|
||||
# - '\d{1,2}\.\d{1,2}\.\d{4}' # Datumsangaben im Text ignorieren
|
||||
# - 'Stand:\s+\S+'
|
||||
|
||||
# --- Erlaubte JSON-LD-Typen ---
|
||||
# Alles, was hier nicht steht und auf der Website auftaucht, löst Alarm aus.
|
||||
allowed_jsonld_types:
|
||||
- "Organization"
|
||||
- "WebSite"
|
||||
- "WebPage"
|
||||
- "Article"
|
||||
- "BreadcrumbList"
|
||||
- "ItemList"
|
||||
- "LocalBusiness"
|
||||
- "Place"
|
||||
- "Person"
|
||||
- "Event"
|
||||
- "FAQPage"
|
||||
- "Question"
|
||||
- "Answer"
|
||||
- "ImageObject"
|
||||
- "SiteLinksSearchBox"
|
||||
- "ContactPage"
|
||||
- "AboutPage"
|
||||
|
||||
# --- Erwartete Security-Header ---
|
||||
# Fehlen diese Header, erscheint ein Hinweis im Report (kein Score-Einfluss).
|
||||
security_headers:
|
||||
- "Content-Security-Policy"
|
||||
- "Strict-Transport-Security"
|
||||
- "X-Content-Type-Options"
|
||||
- "Referrer-Policy"
|
||||
11
example.com/config/allowed_external.yaml
Normal file
11
example.com/config/allowed_external.yaml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Erlaubte externe Domains für example.com
|
||||
#
|
||||
# Nach dem ersten `init`-Crawl alle legitimen externen Domains eintragen,
|
||||
# die auf der Website verlinkt sind (z.B. CDNs, Social-Media, Partner).
|
||||
# Jede Domain, die hier NICHT steht, löst beim nächsten Scan Alarm aus.
|
||||
#
|
||||
# Beispiele:
|
||||
# - fonts.googleapis.com
|
||||
# - cdn.jsdelivr.net
|
||||
# - www.youtube.com
|
||||
# - maps.googleapis.com
|
||||
20
example.com/config/ignore_rules.yaml
Normal file
20
example.com/config/ignore_rules.yaml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# Ignorierregeln für example.com
|
||||
#
|
||||
# ignore_selectors: CSS-Selektoren — passende HTML-Elemente werden vor dem
|
||||
# Vergleich entfernt. Nützlich für dynamische Bereiche (Datum, Uhrzeit,
|
||||
# Zähler, zufällige Werbebanner).
|
||||
#
|
||||
# ignore_patterns: Reguläre Ausdrücke — passende Textstellen werden durch
|
||||
# [IGNORED] ersetzt. Nützlich für Datumsangaben oder sich ändernde Zahlen.
|
||||
#
|
||||
# Diese Regeln ergänzen die Einstellungen in config.yaml (normalization).
|
||||
|
||||
ignore_selectors:
|
||||
# - "#dynamic-counter"
|
||||
# - ".last-updated"
|
||||
# - ".ad-banner"
|
||||
|
||||
ignore_patterns:
|
||||
# - '\d{1,2}\.\d{1,2}\.\d{4}' # Datumsangaben TT.MM.JJJJ
|
||||
# - '\d{1,2}:\d{2}\s*(Uhr)?' # Zeitangaben
|
||||
# - 'zuletzt geändert am \S+'
|
||||
Loading…
Add table
Add a link
Reference in a new issue