""" Анализ HTTP 300-редиректов CDN one-way.work """ import asyncio import sys from pathlib import Path sys.path.insert(0, '/app') from src.browser import BrowserManager from src.scraper import _extract_images_from_js, _navigate_with_retry async def main(): url = "https://3.readmanga.ru/magicheskaia_bitva/vol1/1?mtr=1" referer = "https://3.readmanga.ru/magicheskaia_bitva" async with BrowserManager(headless=True) as bm: ctx, page = await bm.new_page() all_responses = {} async def on_response(r): if "one-way.work" in r.url or "staticfa" in r.url: all_responses[r.url] = { "status": r.status, "headers": dict(r.headers), } page.on("response", on_response) await _navigate_with_retry(page, url, referer=referer) await asyncio.sleep(3) imgs = await _extract_images_from_js(page) print(f"Изображений в readerInit: {len(imgs)}") print(f"Перехвачено ответов: {len(all_responses)}") # Покажем первые несколько — статус и заголовки for img_url, data in list(all_responses.items())[:5]: print(f"\n--- {img_url[:80]} ---") print(f" Status: {data['status']}") for k, v in data['headers'].items(): if k.lower() in ('location', 'content-type', 'content-length', 'x-redirect', 'x-accel'): print(f" {k}: {v}") # Теперь попробуем прямой запрос через playwright request print("\n\n=== Прямой запрос через context.request ===") if imgs: test_url = imgs[5] print(f"URL: {test_url}") try: resp = await ctx.request.get(test_url, headers={"Referer": referer}) print(f"Status: {resp.status}") print(f"Headers: {dict(resp.headers)}") body = await resp.body() print(f"Body size: {len(body)} bytes") except Exception as e: print(f"Error: {e}") await ctx.close() asyncio.run(main())