39 Zeilen
1.3 KiB
Python
39 Zeilen
1.3 KiB
Python
import logging
|
|
import requests
|
|
import config
|
|
|
|
|
|
def verify_recaptcha(response):
|
|
"""Verifiziert die reCAPTCHA v2 Response mit Google"""
|
|
secret_key = config.RECAPTCHA_SECRET_KEY
|
|
|
|
# Wenn kein Secret Key konfiguriert ist, CAPTCHA als bestanden werten (für PoC)
|
|
if not secret_key:
|
|
logging.warning("RECAPTCHA_SECRET_KEY nicht konfiguriert - CAPTCHA wird übersprungen")
|
|
return True
|
|
|
|
# Verifizierung bei Google
|
|
try:
|
|
verify_url = 'https://www.google.com/recaptcha/api/siteverify'
|
|
data = {
|
|
'secret': secret_key,
|
|
'response': response
|
|
}
|
|
|
|
# Timeout für Request setzen
|
|
r = requests.post(verify_url, data=data, timeout=5)
|
|
result = r.json()
|
|
|
|
# Log für Debugging
|
|
if not result.get('success'):
|
|
logging.warning(f"reCAPTCHA Validierung fehlgeschlagen: {result.get('error-codes', [])}")
|
|
|
|
return result.get('success', False)
|
|
|
|
except requests.exceptions.RequestException as e:
|
|
logging.error(f"reCAPTCHA Verifizierung fehlgeschlagen: {str(e)}")
|
|
# Bei Netzwerkfehlern CAPTCHA als bestanden werten
|
|
return True
|
|
except Exception as e:
|
|
logging.error(f"Unerwarteter Fehler bei reCAPTCHA: {str(e)}")
|
|
return False |