fix: exclude internal comment-links; add initial external domain whitelist
- extractor.py: _find_comment_links() liefert nur noch externe Links. Interne Links in Kommentaren sind CMS-Artefakte (auskommentierte Navigations-Fragmente), keine SEO-Spam-Indikatoren. - allowed_external.yaml: 36 legitime externe Domains nach initialem Crawl von bredelar.info manuell geprüft und eingetragen. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
de90dbc19c
commit
5d52db6eed
2 changed files with 60 additions and 18 deletions
|
|
@ -1,18 +1,52 @@
|
|||
# Whitelist erlaubter externer Domains
|
||||
#
|
||||
# Jede externe Domain, die auf der Website verlinkt ist, muss hier eingetragen sein.
|
||||
# Whitelist erlaubter externer Domains — bredelar.info
|
||||
# Erstellt nach initialem Crawl und manueller Sichtprüfung am 2026-06-12.
|
||||
# Neue externe Domains, die NICHT hier stehen, lösen einen Alarm aus.
|
||||
#
|
||||
# Format: eine Domain pro Zeile (ohne Protokoll)
|
||||
# Beispiele:
|
||||
|
||||
# Häufig verwendete externe Ressourcen — nur eintragen, was wirklich genutzt wird:
|
||||
# - fonts.googleapis.com
|
||||
# - fonts.gstatic.com
|
||||
# - cdnjs.cloudflare.com
|
||||
# - maps.googleapis.com
|
||||
# - www.google-analytics.com
|
||||
# - www.googletagmanager.com
|
||||
# Lokale Vereine, Institutionen, Betriebe
|
||||
- www.bergbauspuren-bredelar.de
|
||||
- www.bergbauspuren.de
|
||||
- www.kloster-bredelar.de
|
||||
- www.schuetzen-bredelar.de
|
||||
- www.klosterschuetzen-bredelar.de
|
||||
- www.bsg-bredelar.de
|
||||
- www.sg-hoppecketal.de
|
||||
- www.sg-hoppecketal-padberg.de
|
||||
- www.feuerwehrhütte-bredelar.de
|
||||
- www.lesdurs-mc.de
|
||||
- www.kantorei-marsberg.de
|
||||
- www.tourismus-marsberg.de
|
||||
- www.katholische-kirche-marsberg.de
|
||||
- www.marsberg.ekvw.de
|
||||
|
||||
# Für bredelar.info: Bitte nach erstem `init` prüfen und befüllen.
|
||||
# Vorerst leer = alle externen Links lösen Alarm aus.
|
||||
# Lokale Unternehmen (Gewerbetreibende aus bredelar.info/companies/)
|
||||
- www.VolksbankMarsberg.de
|
||||
- www.borghoff-bredelar.de
|
||||
- www.dachdeckermarsberg.de
|
||||
- www.maler-luce.de
|
||||
- www.pyls-pflasterbau.de
|
||||
|
||||
# Technische Ressourcen (Fonts, CDN, Wetter-Widget)
|
||||
- fonts.googleapis.com
|
||||
- fonts.gstatic.com
|
||||
- cdnjs.cloudflare.com
|
||||
- www.wetter.com
|
||||
- static1.wetter.com
|
||||
|
||||
# Datenschutzerklärung / Impressum (gesetzlich vorgeschriebene Links)
|
||||
- ec.europa.eu
|
||||
- www.e-recht24.de
|
||||
- www.heise.de
|
||||
- www.ratgeberrecht.eu
|
||||
- www.privacyshield.gov
|
||||
- policies.google.com
|
||||
- www.google.com
|
||||
- adssettings.google.com
|
||||
- developers.facebook.com
|
||||
- www.facebook.com
|
||||
- twitter.com
|
||||
|
||||
# Webentwickler / Technischer Betreiber
|
||||
- www.antillu.de
|
||||
|
||||
# www-Variante der eigenen Domain (wird intern verlinkt)
|
||||
- www.bredelar.info
|
||||
|
|
|
|||
|
|
@ -303,10 +303,18 @@ def _extract_jsonld(soup: BeautifulSoup) -> list[dict]:
|
|||
# ---------------------------------------------------------------------------
|
||||
|
||||
def _find_comment_links(html: str, base_url: str) -> list[str]:
|
||||
"""Find URLs hidden inside HTML comments."""
|
||||
"""
|
||||
Find external URLs hidden inside HTML comments.
|
||||
Internal links are excluded — CMS templates routinely comment out
|
||||
navigation fragments that link back to the same domain.
|
||||
"""
|
||||
base_netloc = urlparse(base_url).netloc
|
||||
found: list[str] = []
|
||||
for comment in re.findall(r"<!--(.*?)-->", html, re.S):
|
||||
for href in re.findall(r'href=["\']([^"\']+)["\']', comment, re.I):
|
||||
if href.startswith(("http://", "https://", "/")):
|
||||
found.append(urljoin(base_url, href))
|
||||
if not href.startswith(("http://", "https://")):
|
||||
continue
|
||||
if urlparse(href).netloc == base_netloc:
|
||||
continue # internal comment link — CMS artifact, not a threat
|
||||
found.append(href)
|
||||
return found
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue