test24 / api /validate.py
Niansuh's picture
Update api/validate.py
0ea73f2 verified
raw
history blame
2.03 kB
import requests
import re
import time
from api.config import BASE_URL, headers
from api.logger import setup_logger
logger = setup_logger(__name__)
# Cache variables
cached_hid = None
cache_time = 0
CACHE_DURATION = 36000 # Cache duration in seconds (10 hours)
def getHid(force_refresh=False):
global cached_hid, cache_time
current_time = time.time()
# Check if cache is valid and not forced to refresh
if not force_refresh and cached_hid and (current_time - cache_time) < CACHE_DURATION:
logger.info(f"Using cached_hid: {cached_hid}")
return cached_hid
try:
# Fetch initial HTML content
response = requests.get(BASE_URL, headers=headers)
response.raise_for_status()
content = response.text
# Use regex to find the specific static/chunks path
pattern = r"static/chunks/app/layout-[a-zA-Z0-9]+\.js"
match = re.search(pattern, content)
if match:
# Construct the full URL of the JS file
js_path = match.group()
full_url = f"{BASE_URL}/_next/{js_path}"
# Request JS file content
js_response = requests.get(full_url, headers=headers)
js_response.raise_for_status()
# Search for h-value in the JS content using regex
h_pattern = r'h="([0-9a-f-]+)"'
h_match = re.search(h_pattern, js_response.text)
if h_match:
h_value = h_match.group(1)
logger.info(f"Found new h-value: {h_value}")
# Update cache
cached_hid = h_value
cache_time = current_time
return h_value
else:
logger.error("h-value not found in JS content")
return None
else:
logger.error("JS file path not found in HTML content")
return None
except requests.exceptions.RequestException as e:
logger.error(f"Error occurred while fetching hid: {e}")
return None