Загрузка данных


import time
from playwright.sync_api import sync_playwright

# === НАСТРОЙКИ ===
URL = "http://192.168.1"  # Укажите адрес вашей панели управления
USERNAME = "admin"
PASSWORD_FILE = "passwords.txt"

# Замените эти селекторы на актуальные для вашей формы входа
SELECTOR_LOGIN_INPUT = 'input[name="login"]'
SELECTOR_PASSWORD_INPUT = 'input[name="password"]'
SELECTOR_SUBMIT_BUTTON = 'button[type="submit"]'


def test_passwords():
    with sync_playwright() as p:
        # headless=False открывает окно браузера. Измените на True, когда все настроите,
        # чтобы скрипт работал в фоне и намного быстрее.
        browser = p.chromium.launch(headless=False)
        page = browser.new_page()

        try:
            with open(PASSWORD_FILE, "r", encoding="utf-8") as f:
                for line in f:
                    password = line.strip()
                    if not password:
                        continue

                    print(f"[*] Проверяем пароль: {password}")

                    # Открываем страницу заново для генерации новой соли/токена
                    page.goto(URL)
                    page.wait_for_selector(SELECTOR_LOGIN_INPUT)

                    # Заполняем форму
                    page.fill(SELECTOR_LOGIN_INPUT, USERNAME)
                    page.fill(SELECTOR_PASSWORD_INPUT, password)

                    # Ожидаем сетевой ответ от сервера в момент клика по кнопке
                    with page.expect_response("**/login*") as response_info:
                        page.click(SELECTOR_SUBMIT_BUTTON)

                    response = response_info.value

                    # Проверка статуса ответа
                    if response.status == 401:
                        print("[-] Пароль не подошел (Сервер вернул 401 Unauthorized)")
                        continue

                    # Если статус не 401 (например, 200 OK или 302 Redirect) — вход успешен
                    print(
                        f"\n[+] УСПЕХ! Правильный пароль: {password}"
                    )
                    print(f"[+] Статус ответа сервера: {response.status}")
                    break

        except FileNotFoundError:
            print(f"[!] Файл {PASSWORD_FILE} не найден.")
        finally:
            browser.close()


if __name__ == "__main__":
    test_passwords()