#!/usr/bin/env python3 """ 使用 Edge 浏览器尝试,看是否能绕过 DDoS-Guard """ from playwright.sync_api import sync_playwright import time MD5 = "d94c20d1364af9b484949659398c4062" SLOW_URL = f"https://annas-archive.gl/slow_download/{MD5}/0/3" def try_edge_browser(): """使用 Edge 浏览器""" print(f"目标: {SLOW_URL}\n") with sync_playwright() as p: try: # 尝试启动 Edge browser = p.edge.launch(headless=False) print("使用 Edge 浏览器") except: # 如果 Edge 不可用,使用 Chromium browser = p.chromium.launch(headless=False) print("Edge 不可用,使用 Chromium") 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 Edg/123.0.0.0", viewport={"width": 1920, "height": 1080}, ) page = context.new_page() 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}") browser.close() return url if title != "DDoS-Guard": print(f"\n在第{i+1}秒: 标题={title}") if (i + 1) % 15 == 0: print(f" {i+1}秒... URL: {url[:60]}...") except Exception as e: print(f" {i+1}秒... (导航中)") continue print(f"\n最终URL: {page.url}") browser.close() return None if __name__ == "__main__": print("=" * 60) print("使用 Edge 浏览器测试") print("=" * 60) result = try_edge_browser() if result: print(f"\n成功: {result}") else: print("\n失败")