Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- from concurrent.futures import ThreadPoolExecutor, as_completed
- import time
- # Параметры
- BASE_URL = "https://mkpl-fdbck-view.ru/api/1/user/"
- START_ID = 1000000 # минимальный id пользователя
- END_ID = 9999999 # максимальный id пользователя
- SEARCH_STRING = "Катерина" # Заданная строка для поиска (без учета регистра)
- OUTPUT_FILE = "matching_ids.txt" # Файл для сохранения ID
- MAX_THREADS = 400 # Количество параллельных потоков (у меня 400 потоков забивает 3гб оперативки)
- # Заголовки для имитации браузера
- HEADERS = {
- "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"
- }
- # Глобальный список для хранения ID
- matching_ids = []
- def fetch_user(user_id):
- """
- Запрос данных пользователя по ID и проверка имени.
- """
- try:
- response = requests.get(f"{BASE_URL}{user_id}", headers=HEADERS, timeout=5)
- if response.status_code == 200:
- data = response.json()
- name = data.get("name", "").strip()
- if SEARCH_STRING.lower() in name.lower():
- print(f"[+] Найдено совпадение: ID {user_id}, Имя: {name}")
- return user_id
- elif response.status_code == 404:
- print(f"[-] Пользователь {user_id} не найден. Пропуск.")
- except requests.RequestException as e:
- print(f"[ERROR] Ошибка при обработке ID {user_id}: {e}")
- return None
- def save_results():
- """
- Сохранение результатов в файл.
- """
- with open(OUTPUT_FILE, "w", encoding="utf-8") as file:
- for user_id in matching_ids:
- file.write(f"{user_id}\n")
- print(f"\n✅ Результаты сохранены в файл: {OUTPUT_FILE}")
- def search_users_by_name():
- """
- Поиск пользователей в параллельных потоках.
- """
- global matching_ids
- with ThreadPoolExecutor(max_workers=MAX_THREADS) as executor:
- future_to_id = {executor.submit(fetch_user, user_id): user_id for user_id in range(START_ID, END_ID + 1)}
- for future in as_completed(future_to_id):
- user_id = future_to_id[future]
- try:
- result = future.result()
- if result:
- matching_ids.append(result)
- except Exception as e:
- print(f"[ERROR] Ошибка в потоке для ID {user_id}: {e}")
- if __name__ == "__main__":
- start_time = time.time()
- search_users_by_name()
- save_results()
- print(f"\n⏱️ Время выполнения: {time.time() - start_time:.2f} секунд")
Advertisement
Add Comment
Please, Sign In to add comment