68 lines
2.3 KiB
Python
68 lines
2.3 KiB
Python
"""
|
|
Диагностический скрипт: снимает скриншот страницы и сохраняет 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))
|