все заметки
[ru / en]

Как скачать видео/сторис/рилс в Инстаграм

2026.02.02

Для тех, кому побыстрее, то инструкция ниже.

Разбор

Если использовать вкладку Network в DevTools, то там естественно будут ссылки на mp4. Много ссылок, на разное качество.

Но прикол в том, что на один размер видео две ссылки. Одна на видео, а другая на аудио. То есть, видео без аудио, и аудио без видео.

А вот ссылка на полноценное видео уже есть в коде искомой страницы, по ключу video_versions.

Но мне нужно поудобнее.

Все конфиги JSON находятся в теге с аттрибутом data-sjs. Но как сейчас модно, там переизбыток данных, с многочисленными вложениями массивов.

Нужный конфиг можно идентифицировать с помощью ScheduledServerJS, но это не уникальный маркер.

Поэтому, чтоб не перегружать код (и не пугать незнающих), рекурсивный поиск video_versions происходит по всем данным.

Инструкция

Внимание! Этот код сработает если открыта именно страница видео-поста/сторис/рилс. URL в адресной строке должны быть вида:

https://www.instagram.com/p/<id>/ - пост доступен как повезет\nhttps://www.instagram.com/reels/<id>/ - рилс доступен без регистрации\nhttps://www.instagram.com/stories/<username>/<id>/ - сторис только с авторизацией

И если URL подходит - нужно перегрузить страницу (F5) и только тогда использовать метод. Ибо адрес при серфинге меняется с помощью javascript, без полной перезагрузки страницы.

  • На странице ролика нажимаем ctrl+shift+i - попадаем в консоль DevTools.
    Кстати, там будет предупреждение Stop!. И действительно, не нужно ничего туда левого запихивать.
    Но этот код безопасен!
  • Вставляем данный код в консоль, получаем прямые ссылки на скачивание
function search(data, needle) {\n\tfor (let key in data) {\n\t\tif (key === needle) {\n\t\t\treturn data[key];\n\t\t}\n\t\tif (data[key] !== null\n\t\t\t&& typeof data[key] === 'object'\n\t\t\t&& (video = search(data[key], needle))) {\n\t\t\treturn video;\n\t\t}\n\t}\n\treturn undefined;\n}\n\ndocument.querySelectorAll('[data-sjs]').forEach(e => {\n\tvar data = JSON.parse(e.innerText);\n\tif (video = search(data, 'video_versions')) {\n\t\tconsole.log(video);\n\t}\n});

Результат такой

Ссылки на видео, сторис и рилс из Инстаграм в формате mp4

Не знаю, что хотят сказать разработчики, но эти три ссылки одинаковые...

еще по темам: как скачать?, javascript