Ryanus commited on
Commit
965e185
·
verified ·
1 Parent(s): 8bd9fcf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +51 -16
app.py CHANGED
@@ -1,23 +1,58 @@
 
 
 
1
  from playwright.sync_api import sync_playwright
2
 
 
3
  def generate_traffic_playwright(url, views, stay_duration_min, stay_duration_max):
 
 
 
4
  if not url.startswith('http'):
5
- return "错误:请输入有效的网址。"
6
-
7
  logs = []
8
- with sync_playwright() as p:
9
  # Playwright 会自动下载和管理浏览器
10
- browser = p.firefox.launch(headless=True)
11
- page = browser.new_page()
12
-
13
- for i in range(views):
14
- try:
15
- page.goto(url)
16
- stay_time = random.randint(stay_duration_min, stay_duration_max)
17
- logs.append(f"✅ 第 {i+1}/{views} 次访问成功,停留 {stay_time} 秒。")
18
- page.wait_for_timeout(stay_time * 1000)
19
- except Exception as e:
20
- logs.append(f"❌ {i+1} 次访问失败: {e}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
 
22
- browser.close()
23
- return "\n".join(logs)
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import time
3
+ import random
4
  from playwright.sync_api import sync_playwright
5
 
6
+ # --- 核心流量生成逻辑 ---
7
  def generate_traffic_playwright(url, views, stay_duration_min, stay_duration_max):
8
+ """
9
+ 使用 Playwright 无头浏览器模拟访问指定 URL
10
+ """
11
  if not url.startswith('http'):
12
+ return "错误:请输入有效的网址(以 http:// 或 https:// 开头)。"
13
+
14
  logs = []
15
+ try:
16
  # Playwright 会自动下载和管理浏览器
17
+ with sync_playwright() as p:
18
+ browser = p.firefox.launch(headless=True)
19
+ page = browser.new_page()
20
+
21
+ for i in range(views):
22
+ try:
23
+ page.goto(url, timeout=20000) # 设置20秒超时
24
+ stay_time = random.randint(stay_duration_min, stay_duration_max)
25
+ logs.append(f"✅ 第 {i+1}/{views} 次访问成功,停留 {stay_time} 秒。")
26
+ page.wait_for_timeout(stay_time * 1000)
27
+ except Exception as e:
28
+ logs.append(f"❌ 第 {i+1} 次访问失败: {e}")
29
+
30
+ browser.close()
31
+ except Exception as e:
32
+ return f"初始化 Playwright 失败: {e}\n这通常是因为浏览器未安装。请在 Space 的 'Settings' -> 'Variables' 中添加 `PLAYWRIGHT_BROWSERS_PATH=0` 并重新构建。"
33
+
34
+ return "\n".join(logs)
35
+
36
+ # --- Gradio 界面 ---
37
+ with gr.Blocks(title="网站流量生成器") as demo:
38
+ gr.Markdown("## 🤖 网站流量生成器\n基于 Playwright 和 Hugging Face Spaces")
39
+
40
+ with gr.Row():
41
+ with gr.Column():
42
+ url_input = gr.Textbox(label="目标网址", placeholder="https://example.com")
43
+ views_input = gr.Number(label="访问次数", value=10, minimum=1, maximum=100, precision=0)
44
+ stay_min_input = gr.Number(label="最小停留时间 (秒)", value=5, minimum=1, precision=0)
45
+ stay_max_input = gr.Number(label="最大停留时间 (秒)", value=15, minimum=1, precision=0)
46
+ run_btn = gr.Button("🚀 开始生成流量", variant="primary")
47
 
48
+ with gr.Column():
49
+ output_log = gr.Textbox(label="运行日志", lines=10, max_lines=20, interactive=False)
50
+
51
+ run_btn.click(
52
+ fn=generate_traffic_playwright,
53
+ inputs=[url_input, views_input, stay_min_input, stay_max_input],
54
+ outputs=output_log
55
+ )
56
+
57
+ # 启动应用
58
+ demo.launch()