init
This commit is contained in:
63
debug_cdn.py
Normal file
63
debug_cdn.py
Normal file
@@ -0,0 +1,63 @@
|
||||
"""
|
||||
Анализ 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())
|
||||
|
||||
Reference in New Issue
Block a user