@sharkyyy3

Как получить правильный ответ при запросе через requests?

import requests
    from bs4 import BeautifulSoup
    from fake_useragent import UserAgent
    import time

    session = requests.Session()

    headers = {'User-Agent': UserAgent().chrome}
    r = session.get("https://ssstik.io/ru", headers=headers)

    soup = BeautifulSoup(r.content.decode(), 'html.parser')
    for e in soup.find_all("form"):
        str_post = e.get('data-hx-post')
        str_e = e.get('include-vals')
        res = {sub.split(":")[0]: sub.split(":")[1].replace("'", "") for sub in str_e.split(", ")}

    
    data = {'id': "https://www.tiktok.com/@sonyakisa8/video/6831059289537318149", 'local': 'ru'}

    data.update(res)
    r = session.post(f"https://ssstik.io{str_post}",headers=headers, data=data, timeout = 500)

    print("sst", r, r.content)


Возвращает пустой ответ, хотя там должны быть ссылки.
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
@remzalp
Программер чего попало на чем попало
1. Скорей всего еще какие-то заголовки не учитываете, как минимум куки, которые сайт ставит при первом заходе на страницу, потом content-type. Перехватите запрос в инструментах разработчика в браузере и имитируйте.

2. ответ устарел уже так нельзя https://habr.com/ru/post/511796/

3. Если перед отправкой второго запроса дополнить заголовки:
headers['hx-active-element'] = 'submit'
headers['hx-current-url'] = 'https://ssstik.io/ru'
headers['hx-request'] = 'true'
headers['hx-target'] = 'target'

то второй запрос возвращает результат. Дальше уже продолжайте ковыряться.
Следите за всеми заголовками, которые улетают в браузере и проверяйте их необходимость.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы