init
This commit is contained in:
67
debug_site.py
Normal file
67
debug_site.py
Normal file
@@ -0,0 +1,67 @@
|
||||
"""
|
||||
Диагностический скрипт: снимает скриншот страницы и сохраняет 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))
|
||||
Reference in New Issue
Block a user