ebook-executor / hf_backend /test_monitor_network.py
fromozu's picture
Upload hf_backend/test_monitor_network.py with huggingface_hub
e9d6d40 verified
#!/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请求")