Не могу получать ответ в авторизации через python?

Ссылка скопирована
1 ответ

Пытаюсь разобраться с библиотекой requests
В общем пытаюсь авторизироватmся на сайте не пойму как это сделать, в ответе не вижу, что я авторизирован.
Не могу найти, где разобран конкретно вариант с формой js, может кто подскажет как авторизоваться на сайте с такой формой.

Код

import os import requests from dotenv import load_dotenv  load_dotenv()  data = {     "captcha": "",     "email": f"{os.getenv('My_email')}",     "pass": f"{os.getenv('some_pass')}" }  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",   }  variable = requests.Session()   redir = variable.get("https://texttospeech.ru/api/v1/login") responce = variable.post("https://texttospeech.ru", headers=headers, data=data, allow_redirects=True)  print(responce.text)

import os import requests from dotenv import load_dotenv load_dotenv() data = { "captcha": "", "email": f"{os.getenv('My_email')}", "pass": f"{os.getenv('some_pass')}" } 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", } variable = requests.Session() redir = variable.get("https://texttospeech.ru/api/v1/login") responce = variable.post("https://texttospeech.ru", headers=headers, data=data, allow_redirects=True) print(responce.text)

Дополнительно:

В variable.post не нужно ли использовать тот же урл - https://texttospeech.ru/api/v1/login ?

responce = variable.post("https://texttospeech.ru/api/v1/login", headers=headers, data=data, allow_redirects=True)

responce = variable.post("https://texttospeech.ru/api/v1/login", headers=headers, data=data, allow_redirects=True)

У меня работает так:
1. Авторизация:

import requests  url = 'https://texttospeech.ru/api/v1/login'  headers = {     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0',     'Content-Type': 'text/plain;charset=UTF-8', }  data = {"email": "sample@email.com", "pass": "password", "captcha": ""}  session = requests.Session() response = session.post(url, json=data)  print(response.text)

import requests url = 'https://texttospeech.ru/api/v1/login' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0', 'Content-Type': 'text/plain;charset=UTF-8', } data = {"email": "sample@email.com", "pass": "password", "captcha": ""} session = requests.Session() response = session.post(url, json=data) print(response.text)

Не могу получать ответ в авторизации через python?

2. Код для генерации mp3 из текста:

import requests  headers = {     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0',     'Content-Type': 'text/plain;charset=UTF-8', }   def get_token() -> str:     url = 'https://texttospeech.ru/api/v1/login'     data = {"email": "sample@email.com", "pass": "password", "captcha": ""}     with requests.Session() as session:         response = session.post(url, headers=headers, json=data)         token = response.json().get('data').get('token')         return token   headers['token'] = get_token()   def synthesize(text: str) -> None:     url = 'https://texttospeech.ru/api/v1/synthesize'     data = {"rate": "0", "pitch": "0", "volume": "0", "hertz": "0", "shift": "0", "echo": "0",             "text": f'{text}',             "code": "ru-RU009",             "format": "mp3"}     with requests.Session() as session:         response = session.post(url, headers=headers, json=data)         if response.status_code == 200:             print(response.json().get('message'))             filelink = response.json().get('data').get('filelink')             with open(f'{text[0:10]}.mp3', 'wb') as file:                 response = session.get(f'https://texttospeech.ru/{filelink}', headers=headers)                 file.write(response.content)         else:             print(response.text)   synthesize('Привет мир')

import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0', 'Content-Type': 'text/plain;charset=UTF-8', } def get_token() -> str: url = 'https://texttospeech.ru/api/v1/login' data = {"email": "sample@email.com", "pass": "password", "captcha": ""} with requests.Session() as session: response = session.post(url, headers=headers, json=data) token = response.json().get('data').get('token') return token headers['token'] = get_token() def synthesize(text: str) -> None: url = 'https://texttospeech.ru/api/v1/synthesize' data = {"rate": "0", "pitch": "0", "volume": "0", "hertz": "0", "shift": "0", "echo": "0", "text": f'{text}', "code": "ru-RU009", "format": "mp3"} with requests.Session() as session: response = session.post(url, headers=headers, json=data) if response.status_code == 200: print(response.json().get('message')) filelink = response.json().get('data').get('filelink') with open(f'{text[0:10]}.mp3', 'wb') as file: response = session.get(f'https://texttospeech.ru/{filelink}', headers=headers) file.write(response.content) else: print(response.text) synthesize('Привет мир')

  • Спасибо! Да это ответ, а как получить ответ после авторизации там же идет редирект, где видна авторизация с https://texttospeech.ru. Как прописать редирект уже когда авторизирован, чтобы работать с телом сайта .
    _______________________________________________________________________________________________________________________
    Сейчас пробую варианты с селениум, тоже как вариант, cookies подгрузил но с использованием профилей chroma напрямую. Cохранить и через рефреш подгрузить не получилось. Столкнулся с тем, что если браузер уже запущен надо закрыть иначе ошибка, спасает только вариант работы в фоне.
  • А пример можно что вы хотите делать с телом сайта и что не получается?
  • Не могу получать ответ в авторизации через python?

    да не получается вывести текст после авторизации, чтобы я мог работать с сайтом поскольку на этом сайте нет api.

  • Jimm24, так после того как получили токен - отсылайте его в заголовке и работайте.

    Дополнил свой ответ выше.

  • dim5x, Спасибо огромное! Я уже через silenium почти решил, тоже вариант но встрял с сохранением, поскольку при нажатии открывается ос, а собственно перехвата в силениуме нет, собственно Ваш вариант с подстановкой линка дает понимание, что надо линк соединить с url сайта и сохранить уже свое значение по адресу обращения к файлу, только непонятно как обращаться в силениуме, если нет type=file пока не нашел. Спасибо за помощь! через requests куда удобнее.

Ответы:

1. подозреваю, что в .login надо отправлять POST-запрос с data, а не пустой GET
2. поле captcha не должно быть пустым. В этом может быть проблема

  • 1. Get там по-моему вообще лишний поскольку страницы без путей покрайне мере авторизация обращается
    https://texttospeech.ru/api/v1/login
    но ответ через post идет следящего содержания если пост
    {
    "status": "error",
    "message": "в запросе отсутствует email",
    "runtime": 0.0012,
    "data": false
    }
    если get 404 то есть такой страницы нет
    2. Вот откуда взять это, я так и не пойму поскольку в ответе этот параметр пустой.
    и смотрел после авторизации, если авторизирован идет редирект на https://texttospeech.ru/api/v1/user
    но ответ там следующего содержания
    {
    "status": "error",
    "message": "в заголовках отсутствует token",
    "runtime": 0.0008,
    "data": false
    }
  • Заметил что капча меняет но при ручной авторизации ни разу не вводил эту капчу, она автоматом как-то прописывается.
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Роман IT Ответ

Для того чтобы получить ответ в авторизации через Python, необходимо использовать библиотеку requests для выполнения HTTP запросов. Ниже приведен пример кода, демонстрирующий как можно авторизоваться на сайте с помощью Python:

```php
import requests

# Установка параметров авторизации
url = 'http://example.com/login'
payload = {
'username': 'your_username',
'password': 'your_password'
}

# Отправка POST запроса для авторизации
response = requests.post(url, data=payload)

# Проверка статуса ответа
if response.status_code == 200:
print('Успешно авторизованы')
# Дальнейшие действия после успешной авторизации
else:
print('Ошибка авторизации')
# Обработка ошибки авторизации
```

В данном примере мы отправляем POST запрос на указанный URL с данными авторизации (логин и пароль) в виде словаря payload. После получения ответа, проверяем статус ответа: если код состояния равен 200, значит авторизация прошла успешно, и мы можем выполнять дальнейшие действия. В противном случае, обрабатываем ошибку авторизации.

Убедитесь, что вы правильно указали URL для авторизации, а также корректные данные для входа (логин и пароль). Также обратите внимание на возможные механизмы защиты, такие как CSRF токены, которые могут потребоваться для успешной авторизации.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно