File size: 1,956 Bytes
80e0598 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
import os
import requests
import logging
from typing import Optional
logger = logging.getLogger(__name__ )
# Get the secret key from environment variable
RECAPTCHA_SECRET_KEY = os.environ.get("RECAPTCHA_SECRET_KEY")
def verify_recaptcha(response_token: Optional[str]) -> bool:
# LOGGING: Log the token start
logger.info(f"Starting reCAPTCHA verification with token: {response_token[:10]}..." if response_token else "None")
# Check if secret key is set
secret_key = os.environ.get("RECAPTCHA_SECRET_KEY")
if not secret_key:
logger.warning("RECAPTCHA_SECRET_KEY not set, bypassing verification")
return True
else:
# LOGGING: Log that secret key is set
logger.info("RECAPTCHA_SECRET_KEY is set (not showing for security)")
# If no token provided, verification fails
if not response_token:
logger.warning("No reCAPTCHA response token provided")
return False
try:
# LOGGING: Log before making request
logger.info("Sending verification request to Google reCAPTCHA API")
verification_response = requests.post(
"https://www.google.com/recaptcha/api/siteverify",
data={
"secret": secret_key,
"response": response_token
}
)
result = verification_response.json()
# LOGGING: Log the complete result from Google
logger.info(f"reCAPTCHA verification result: {result}")
if result.get("success"):
logger.info("reCAPTCHA verification successful")
return True
else:
# LOGGING: Log the specific error codes
logger.warning(f"reCAPTCHA verification failed: {result.get('error-codes', [])}")
return False
except Exception as e:
# LOGGING: Log any exceptions
logger.error(f"Error verifying reCAPTCHA: {str(e)}")
return False
|