|
import re |
|
import time |
|
import asyncio |
|
import aiohttp |
|
from typing import Optional |
|
|
|
base_url = "https://www.blackbox.ai" |
|
headers = { |
|
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36', |
|
} |
|
|
|
|
|
cached_hid = None |
|
cache_time = 0 |
|
CACHE_DURATION = 36000 |
|
|
|
async def getHid(force_refresh: bool = False) -> Optional[str]: |
|
global cached_hid, cache_time |
|
current_time = time.time() |
|
|
|
|
|
if not force_refresh and cached_hid and (current_time - cache_time) < CACHE_DURATION: |
|
print("Using cached_hid:", cached_hid) |
|
return cached_hid |
|
|
|
uuid_format = r'["\']([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})["\']' |
|
|
|
def is_valid_context(text_around): |
|
return any(char + '=' in text_around for char in 'abcdefghijklmnopqrstuvwxyz') |
|
|
|
try: |
|
async with aiohttp.ClientSession(headers=headers) as session: |
|
async with session.get(base_url) as response: |
|
if response.status != 200: |
|
print("Failed to load the page.") |
|
return None |
|
|
|
page_content = await response.text() |
|
js_files = re.findall(r'static/chunks/\d{4}-[a-fA-F0-9]+\.js', page_content) |
|
|
|
for js_file in js_files: |
|
js_url = f"{base_url}/_next/{js_file}" |
|
async with session.get(js_url) as js_response: |
|
if js_response.status == 200: |
|
js_content = await js_response.text() |
|
for match in re.finditer(uuid_format, js_content): |
|
start = max(0, match.start() - 10) |
|
end = min(len(js_content), match.end() + 10) |
|
context = js_content[start:end] |
|
|
|
if is_valid_context(context): |
|
validated_value = match.group(1) |
|
print("Found and validated h-value:", validated_value) |
|
|
|
cached_hid = validated_value |
|
cache_time = current_time |
|
return validated_value |
|
print("The h-value was not found in any JS content.") |
|
return None |
|
except Exception as e: |
|
print(f"An error occurred during the request: {e}") |
|
return None |
|
|