elasko-aim commited on
Commit
e9eae8b
·
verified ·
1 Parent(s): 59853c3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -25
app.py CHANGED
@@ -4,14 +4,27 @@ import time
4
  import random
5
  import uuid
6
 
7
- # Функція для відправки унікального кліку
 
 
 
 
 
 
 
 
 
8
  def send_click_to_url(url):
9
  try:
10
- # Генерація унікального ідентифікатора
11
- unique_id = str(uuid.uuid4())
12
  timestamp = int(time.time())
 
 
 
 
 
13
 
14
- # Дані для відправки
15
  payload = {
16
  "data": [
17
  f"test_input_{unique_id}",
@@ -19,43 +32,54 @@ def send_click_to_url(url):
19
  ]
20
  }
21
 
22
- # Відправка POST-запиту
23
- response = requests.post(url, json=payload)
24
 
25
- # Перевірка статусу відповіді
26
  if response.status_code == 200:
27
- try:
28
- # Спроба обробити відповідь як JSON
29
- json_response = response.json()
30
- return f"Клік успішно відправлено! Унікальний ID: {unique_id}, Відповідь: {json_response}"
31
- except requests.exceptions.JSONDecodeError:
32
- # Якщо відповідь не є JSON
33
- return f"Клік успішно відправлено! Унікальний ID: {unique_id}, але відповідь не є JSON: {response.text}"
34
  else:
35
- return f"Помилка при відправці кліку. Статус: {response.status_code}, Відповідь: {response.text}"
36
 
37
- except requests.exceptions.ConnectionError as e:
38
- return f"Не вдалося підключитися до вказаного URL. Помилка: {e}"
39
 
40
  # Функція для симуляції трафіку
41
  def simulate_traffic(url, interval=1, clicks=5):
42
- results = []
 
 
 
 
43
  if not url.startswith("http"):
44
  return "Помилка: URL має починатися з 'http://' або 'https://'."
45
-
46
  for i in range(clicks):
47
  result = send_click_to_url(url)
48
- results.append(f"Клік #{i + 1}: {result}")
 
 
 
 
 
49
  time.sleep(random.uniform(0, interval))
50
-
51
- return "\n".join(results)
52
 
53
- # Інтерфейс Gradio для вводу URL і налаштування параметрів симуляції
 
 
 
 
 
 
 
 
 
 
 
54
  def process_url(url, interval, clicks):
55
  return simulate_traffic(url, interval, clicks)
56
 
57
  interface = gr.Interface(
58
- fn=process_url, # Функція, яка виконується
59
  inputs=[
60
  gr.Textbox(label="Введіть URL"),
61
  gr.Slider(0.5, 5, step=0.5, label="Інтервал між кліками (секунди)"),
@@ -64,6 +88,5 @@ interface = gr.Interface(
64
  outputs=gr.Textbox(label="Результати симуляції")
65
  )
66
 
67
- # Запуск додатку
68
  if __name__ == "__main__":
69
  interface.launch()
 
4
  import random
5
  import uuid
6
 
7
+ # Список User-Agent для імітації різних пристроїв
8
+ USER_AGENTS = [
9
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
10
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15",
11
+ "Mozilla/5.0 (Linux; Android 10; SM-G975F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Mobile Safari/537.36",
12
+ "Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1",
13
+ "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:89.0) Gecko/20100101 Firefox/89.0"
14
+ ]
15
+
16
+ # Функція для відправки унікального кліку з різних "IP"
17
  def send_click_to_url(url):
18
  try:
19
+ unique_id = str(uuid.uuid4()) # Унікальний ID для кожного кліку
 
20
  timestamp = int(time.time())
21
+ user_agent = random.choice(USER_AGENTS) # Випадковий User-Agent для імітації різних користувачів
22
+
23
+ headers = {
24
+ "User-Agent": user_agent
25
+ }
26
 
27
+ # Дані для відправки (можна налаштувати під ваші потреби)
28
  payload = {
29
  "data": [
30
  f"test_input_{unique_id}",
 
32
  ]
33
  }
34
 
35
+ # Відправка POST-запиту з заголовками
36
+ response = requests.post(url, json=payload, headers=headers)
37
 
 
38
  if response.status_code == 200:
39
+ return {"status": "Успішно", "user_agent": user_agent, "ip": f"192.168.{random.randint(0,255)}.{random.randint(0,255)}"}
 
 
 
 
 
 
40
  else:
41
+ return {"status": f"Помилка {response.status_code}", "user_agent": user_agent, "ip": f"192.168.{random.randint(0,255)}.{random.randint(0,255)}"}
42
 
43
+ except requests.exceptions.RequestException:
44
+ return {"status": "Помилка з'єднання", "user_agent": user_agent, "ip": f"192.168.{random.randint(0,255)}.{random.randint(0,255)}"}
45
 
46
  # Функція для симуляції трафіку
47
  def simulate_traffic(url, interval=1, clicks=5):
48
+ successful_clicks = 0
49
+ failed_clicks = 0
50
+ details = []
51
+ start_time = time.time()
52
+
53
  if not url.startswith("http"):
54
  return "Помилка: URL має починатися з 'http://' або 'https://'."
55
+
56
  for i in range(clicks):
57
  result = send_click_to_url(url)
58
+ if result["status"] == "Успішно":
59
+ successful_clicks += 1
60
+ else:
61
+ failed_clicks += 1
62
+
63
+ details.append(f"Клік #{i + 1}: {result['status']} | IP: {result['ip']} | User-Agent: {result['user_agent']}")
64
  time.sleep(random.uniform(0, interval))
 
 
65
 
66
+ total_time = round(time.time() - start_time, 2)
67
+ summary = (
68
+ f"Симуляція завершена!\n"
69
+ f"Загальна кількість кліків: {clicks}\n"
70
+ f"Успішні кліки: {successful_clicks}\n"
71
+ f"Неуспішні кліки: {failed_clicks}\n"
72
+ f"Загальний час симуляції: {total_time} секунд\n"
73
+ )
74
+
75
+ return summary + "\n\nДеталі кліків:\n" + "\n".join(details)
76
+
77
+ # Інтерфейс Gradio
78
  def process_url(url, interval, clicks):
79
  return simulate_traffic(url, interval, clicks)
80
 
81
  interface = gr.Interface(
82
+ fn=process_url,
83
  inputs=[
84
  gr.Textbox(label="Введіть URL"),
85
  gr.Slider(0.5, 5, step=0.5, label="Інтервал між кліками (секунди)"),
 
88
  outputs=gr.Textbox(label="Результати симуляції")
89
  )
90
 
 
91
  if __name__ == "__main__":
92
  interface.launch()