""" Диагностический скрипт: снимает скриншот страницы и сохраняет HTML. Аргументы: 1: URL страницы (обязательный) 2: Referer (опциональный, по умолчанию — домен из URL) """ import asyncio import sys from pathlib import Path sys.path.insert(0, '/app') from src.browser import BrowserManager from urllib.parse import urlparse async def main(url: str, referer: str | None = None): async with BrowserManager(headless=True) as bm: ctx, page = await bm.new_page() # Слушаем все ответы async def on_response(r): print(f" [{r.status}] {r.url[:120]}") page.on("response", on_response) p = urlparse(url) if referer is None: referer = f"{p.scheme}://{p.netloc}/" print(f"\n=== Открываем: {url} ===") print(f"=== Referer: {referer} ===\n") try: resp = await page.goto(url, wait_until="domcontentloaded", timeout=30_000, referer=referer) print(f"\nСтатус ответа: {resp.status if resp else 'нет'}") print(f"Финальный URL: {page.url}") except Exception as e: print(f"Ошибка goto: {e}") # Ждём немного JS try: await page.wait_for_load_state("networkidle", timeout=15_000) except Exception: pass # Скриншот out = Path("/app/output/debug_screenshot.png") out.parent.mkdir(exist_ok=True) await page.screenshot(path=str(out), full_page=False) print(f"\nСкриншот сохранён: {out}") print(f"Title: {await page.title()}") # Сохраняем HTML html = await page.content() html_out = Path("/app/output/debug_page.html") html_out.write_text(html) print(f"HTML сохранён: {html_out} ({len(html)} байт)") print(f"\n=== HTML (первые 3000 символов) ===") print(html[:3000]) await ctx.close() if __name__ == "__main__": url = sys.argv[1] if len(sys.argv) > 1 else "https://3.readmanga.ru/magicheskaia_bitva" ref = sys.argv[2] if len(sys.argv) > 2 else None asyncio.run(main(url, ref))