#!/usr/bin/env python3 """ 监控网络请求,看是否能捕获到 EPUB 下载请求 """ from playwright.sync_api import sync_playwright import time MD5 = "d94c20d1364af9b484949659398c4062" SLOW_URL = f"https://annas-archive.gl/slow_download/{MD5}/0/3" def monitor_network(): """监控网络请求""" print(f"目标: {SLOW_URL}\n") epub_requests = [] all_requests = [] with sync_playwright() as p: browser = p.chromium.launch(headless=False) context = browser.new_context( user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36", ) page = context.new_page() # 监控请求 def on_request(request): url = request.url if '.epub' in url.lower(): print(f" [EPUB请求] {url}") epub_requests.append(url) elif 'download' in url.lower() or 'file' in url.lower(): all_requests.append(url) def on_response(response): url = response.url content_type = response.headers.get('content-type', '') if '.epub' in url.lower(): print(f" [EPUB响应] {url} - {content_type}") epub_requests.append(url) page.on("request", on_request) page.on("response", on_response) print("访问 slow_download...") page.goto(SLOW_URL, timeout=120000, wait_until="domcontentloaded") print(f"初始标题: {page.title()}") # 等待最多60秒 for i in range(60): time.sleep(1) try: title = page.title() url = page.url if url.lower().endswith('.epub'): print(f"\n在第{i+1}秒发现EPUB URL: {url}") browser.close() return url if title != "DDoS-Guard": print(f"\n在第{i+1}秒: 标题={title}, URL={url}") if (i + 1) % 15 == 0: print(f" {i+1}秒... 标题={title}") except Exception as e: print(f" {i+1}秒... (导航中)") continue print(f"\n最终URL: {page.url}") print(f"\n捕获到的EPUB相关请求: {epub_requests}") print(f"捕获到的下载相关请求: {all_requests[:5]}") browser.close() return epub_requests[0] if epub_requests else None if __name__ == "__main__": print("=" * 60) print("监控网络请求") print("=" * 60) result = monitor_network() if result: print(f"\n成功: {result}") else: print("\n未捕获到EPUB请求")