Начинающий
- Статус
- Оффлайн
- Регистрация
- 22 Авг 2022
- Сообщения
- 3
- Реакции
- 0
Крч, решил перейти на selenium вместо голых запросов — браузер сам делает все редиректы и JS-скрипты, больше не был нужен костыль с двумя сессиями и мета-refresh. Захватываю капчу прямо со страницы через элемент, прогоняю через имеющийся распознаватель, ввожу логин, пароль и капчу, а дальше жду проверок на наличие определенной строчки на сайте. Всё работает с первого раза, больше нет проблем с куки и рассинхроном.
Всем спасибо за помощь!
Всем спасибо за помощь!
Столкнулся с проблемой при попытке автоматизировать авторизацию на веб-сайте с помощью Python и библиотеки requests. Мой скрипт успешно отправляет POST-запрос с логином, паролем, корректно распознанной и отправленной капчей, а также полученным CSRF-токеном.
Однако, в ответ на POST-запрос сервер возвращает HTTP статус код 200 OK, но тело ответа содержит только BOM UTF-8 (\xef\xbb\xbf), и отсутствует редирект на личный кабинет. Авторизация вручную через браузер работает корректно.
Подскажите, пожалуйста, в чем может быть причина такого поведения сервера и как это можно исправить?
Возможно, кто-то сталкивался с подобной ситуацией? Буду благодарен за любые советы.
Вот часть моего кода, отвечающая за получение CSRF-токена:
Код:
try:
r_login_page = session.get(url)
soup = BeautifulSoup(r_login_page.text, "html.parser")
csrf_input = soup.find("input", {"name": "CSRFXID"})
csrf_token = csrf_input["value"] if csrf_input else ""
except requests.exceptions.RequestException as e:
print(f"[ERROR] Ошибка при получении страницы авторизации: {e}")
csrf_token = ""
Вот часть отвечающая за формирование данных для POST-запроса:
Код:
payload = {
"CSRFXID": csrf_token,
"login": "логин",
"password": "пароль",
"secure": str(captcha_value),
"login_action": "Войти"
}
print(f"Значение капчи для отправки: {captcha_value}, CSRF-токен: {csrf_token}")
Отправка POST-запроса:
Код:
headers = {
"User-Agent": "Mozilla/5.0",
"Referer": url,
"Content-Type": "application/x-www-form-urlencoded",
"Origin": "https://lk.pvpwar.net"
}
response = session.post(url, data=payload, headers=headers)
print(f"[DEBUG] Ответ на POST (статус код): {response.status_code}")
print(f"[DEBUG] Ответ на POST (content): {response.content}")
print(f"[DEBUG] История редиректов после POST: {response.history}")
Проверка успешной авторизации(проверяю есть ли нужный текст на странице личного кабинета) :
Код:
r_lk = session.get(lk_url)
if "Статус Аккаунта:" in r_lk.text or "Premium Статус" in r_lk.text or "Магазин за BP" in r_lk.text:
print("Успешный вход!")
logged_in = True
else:
print("[ERROR] Авторизация не удалась ...")
P.S вот страница входа мб поможет
Пожалуйста, авторизуйтесь для просмотра ссылки.
Последнее редактирование: