Guest User

Untitled

a guest
Dec 26th, 2024
516
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.99 KB | None | 0 0
  1. import requests
  2. from concurrent.futures import ThreadPoolExecutor, as_completed
  3. import time
  4.  
  5. # Параметры
  6. BASE_URL = "https://mkpl-fdbck-view.ru/api/1/user/"
  7. START_ID = 1000000 # минимальный id пользователя
  8. END_ID = 9999999  # максимальный id пользователя
  9. SEARCH_STRING = "Катерина"  # Заданная строка для поиска (без учета регистра)
  10. OUTPUT_FILE = "matching_ids.txt"  # Файл для сохранения ID
  11. MAX_THREADS = 400 # Количество параллельных потоков (у меня 400 потоков забивает 3гб оперативки)
  12.  
  13. # Заголовки для имитации браузера
  14. HEADERS = {
  15.     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
  16. }
  17.  
  18. # Глобальный список для хранения ID
  19. matching_ids = []
  20.  
  21.  
  22. def fetch_user(user_id):
  23.     """
  24.    Запрос данных пользователя по ID и проверка имени.
  25.    """
  26.     try:
  27.         response = requests.get(f"{BASE_URL}{user_id}", headers=HEADERS, timeout=5)
  28.         if response.status_code == 200:
  29.             data = response.json()
  30.             name = data.get("name", "").strip()
  31.             if SEARCH_STRING.lower() in name.lower():
  32.                 print(f"[+] Найдено совпадение: ID {user_id}, Имя: {name}")
  33.                 return user_id
  34.         elif response.status_code == 404:
  35.             print(f"[-] Пользователь {user_id} не найден. Пропуск.")
  36.     except requests.RequestException as e:
  37.         print(f"[ERROR] Ошибка при обработке ID {user_id}: {e}")
  38.     return None
  39.  
  40.  
  41. def save_results():
  42.     """
  43.    Сохранение результатов в файл.
  44.    """
  45.     with open(OUTPUT_FILE, "w", encoding="utf-8") as file:
  46.         for user_id in matching_ids:
  47.             file.write(f"{user_id}\n")
  48.     print(f"\n✅ Результаты сохранены в файл: {OUTPUT_FILE}")
  49.  
  50.  
  51. def search_users_by_name():
  52.     """
  53.    Поиск пользователей в параллельных потоках.
  54.    """
  55.     global matching_ids
  56.  
  57.     with ThreadPoolExecutor(max_workers=MAX_THREADS) as executor:
  58.         future_to_id = {executor.submit(fetch_user, user_id): user_id for user_id in range(START_ID, END_ID + 1)}
  59.  
  60.         for future in as_completed(future_to_id):
  61.             user_id = future_to_id[future]
  62.             try:
  63.                 result = future.result()
  64.                 if result:
  65.                     matching_ids.append(result)
  66.             except Exception as e:
  67.                 print(f"[ERROR] Ошибка в потоке для ID {user_id}: {e}")
  68.  
  69.  
  70. if __name__ == "__main__":
  71.     start_time = time.time()
  72.     search_users_by_name()
  73.     save_results()
  74.     print(f"\n⏱️ Время выполнения: {time.time() - start_time:.2f} секунд")
  75.  
Advertisement
Add Comment
Please, Sign In to add comment