Задать вопрос
@koimir4

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

Я экспериментирую с отправкой ссылки на видео TikTok через Python, без использования обычной формы в браузере.
https://jjtiktok.com/
Для сравнения я также протестировал JJTikTok (jjtiktok.com) и заметил, что сайт принимает ссылку TikTok через форму загрузки. Теперь хочу понять общий принцип работы такой формы и корректно повторить отправку запроса в своём тестовом проекте.

Упрощённый пример моего кода:

import requests
endpoint = "https://example.com/api/download"
data = {
    "url": "https://www.tiktok.com/@example/video/123456789"
}
headers = {
    "User-Agent": "Mozilla/5.0",
    "Content-Type": "application/x-www-form-urlencoded"
}
response = requests.post(
    endpoint,
    data=data,
    headers=headers,
    timeout=30
)
print(response.status_code)
print(response.text)


При отправке через браузер всё работает нормально, но запрос из Python либо возвращает пустой ответ, либо сервер не обрабатывает переданную ссылку.

Что в такой ситуации лучше проверить в первую очередь? Может ли проблема быть связана с методом запроса, кодировкой формы, CSRF-токеном, cookies/session, скрытыми полями или обязательными заголовками?

Хочу разобраться именно в том, как определить фактический запрос, который отправляет браузер, и правильно воспроизвести его с помощью requests.
  • Вопрос задан
  • 65 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик + ИИ
    9 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
Дело не в ссылке TikTok, а в том что ты угадываешь запрос вместо того чтобы его скопировать. Открой DevTools → Network, отправь ссылку через форму на сайте, найди тот POST/XHR и жми Copy → Copy as cURL. Проверь что cURL работает сам по себе, потом переноси в requests.

Если перед POST сайт ставит cookies/CSRF — юзай requests.Session(): сначала GET на страницу, потом POST с токеном из неё. Content-Type руками задавать не надо, requests сам закодирует form data при data={...}.

Если в запросе динамический JS-токен — requests не вытянет, тогда уже Playwright/Selenium.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы