Как стать автором
Обновить

Комментарии 72

За два последних года исходный код страницы в веб-версии Instagram кардинально менялся два раза (меняли названия переменных, содержание), плюс они могут добавлять и удалять пробелы в синтаксисе по своему усмотрению.
Ну и использовать explode для получения подстроки в строке, это по меньшей мере кощунство. Можно было применить substr+strpos, preg_match, strstr.
Будем следить за этим, например, в мобильном приложении мы поддерживаем два вида постинга (отличаются расположением кнопок).

Спасибо за замечание.
О, вот это круто! Надеюсь переживет 1 июня, добавим как альтернативу
Похоже, что пережило.
Ага, я уже залил изменения, но до релиза еще надо дописать один метод и все оттестить
вы не знаете есть способ для нахождения фотографий по местам? lat=...&long=...?
Наверное это не совсем то, что нужно, это данные по location_id
Я вот пробовал подставлять /locations/search/?__a=1&lat=48.858844&lng=2.294351 вариации вот таких вещей, но не сработало)
Спасибо. как понимаю location id из фэйсбука берется. И referer не указывал, вернулся не пустой JSON
а что по скорости работы в отличии от API?
Не замеряли даже, нам главное было данные получить
Я наверное нехороший буратино, но я бы наверное пошёл по пути разбора официального приложения и дёргания их API с их ключами. Собственно, мало чем отличается, только так есть хотя бы документированный API.
Тогда вам придется сначала указать логин и пароль, насколько я понимаю.
Вот, кстати, живой проект по этой теме https://github.com/mgp25/Instagram-API
А вы постите действительно реальными устройствами или все же через эмулятор? И, кстати, почему №1 вы для постинга?) Никогда не слышал про вас.
Да, действительно с реальных устройств, вот видео-пруф: https://www.youtube.com/watch?v=CsJKb4RX-jo
Эмуляторы не используем, но со счетов их не скидываем.

Парень, который занимался PR предложил так написать =D Когда разбирались в теме, мы нашли только одну компанию, которая заявила, что использует настоящие устройства schedugr.am, но подтверждение их слов мы не видели. Остальные сервисы пользуются приватным API.

Кажется о нас вообще мало кто слышал, потому что рекламой мы активно не занимаемся пока.
preg_match('/window\._sharedData = (.+);/ui', $content, $matches);

Максимально доступное качество фото можно получить, удалив все кроме /t/ из ссылки — https://scontent.cdninstagram.com/t/12950481_1753078061593396_874826488_n.jpg, через параметры в ссылке можно управлять размером и кропом.

или вот так: https://instagram.com/p/9BDXa_L7bm/media/?size=l

Лента залогиненного пользователя в JSON: https://www.instagram.com/?__a=1
Без сессии ответ будет пустой {}
Зарепортили баг с пагинацией по хештегам

В коде библиотеки пагинация сделана через передачу параметра max_id.
И сейчас он не работает, то есть первая пачка медиа есть, но следующая возвращается с пустым массивом.
На сколько я понял параметр max_id, то работает, то не работает. Не знаете стабильный способ?
вроде с tag.media.page_info.end_cursor в качестве max_id что-то меняется в фиде, пока не разбирался
С тегами не проверял, но про страницу геолокации (https://www.instagram.com/explore/locations/278324317/) точно могу сказать, что фид меняется и в случае использования start_cursor, в случае использования end_cursor. Причем если смотреть на время картинок, то всегда выдаются более поздние картинки (и при start_cursor, и при end_cursor)
Перепутал — выдаются более ранние картинки
А вы не знаете как получить из user_id username?
Знаю только способы с использованием приватного или официального апи
Хотя… Если для каждого пользователя хранить какую-либо картинку (идентификатор картинки), то получив информацию о картинке, можно узнать новое имя пользователя
Например, можно добавить метом getUserByMediaId. А ссылку на фото/видео получать из mediaId вот таким путем
Но все равно не очень удобно получается.
Можно сразу сохранять user.media.nodes[0].code из https://www.instagram.com/username/?__a=1
Странно, но сейчас max_id=mediaId работает опять и в тоже время max_id=end_cursor тоже работает
https://www.instagram.com/explore/tags/test/?__a=1 перестал работать (
Если вы на PHP, то я выпустил обновление
да, спасибо
Круто!
А как управлять размером и кропом через параметры?

Если не секрет, каким способом находятся такие ссылки?

Обязательно добавим это в библиотеку.
у меня популярное приложение на instagram api и я озадачился этим вопросом достаточно давно. нашел перебором параметров и изучением скриптов.
управление кропом описано тут
Ясно, спасибо
за год — не менялось, скорее всего эти ендпоинты активно используются различными сервисами-партнерами и менять их достаточно сложно
очень удобно
Это хороший конечно способ, но может быть у нас уже появился рынок верифицированных клиентов, или хотя-бы access_token?
Интересно. Я о таком не знаю.

Плюс зависеть от чужого токена не оч приятно. Кстати, как-то я искал на github рабочие клиенты/токены как-то давно и находил рабочие
Передо мной тоже была цель вытянуть несколько фотографий, так как с начала месяца старые скрипты рухнули. И казалось бы https://www.instagram.com/username/media/ прекрасно отдает данные json. Но ведь ajax'ом нельзя вытянуть данные на моем домене с домена инстаграма. Ок, берем dataType: jsonP. Не работает. Все же результат json <> jsonp
//JSON
{"name":"stackoverflow","id":5}
//JSONP
func({"name":"stackoverflow","id":5});

Нагуглил решение прогонять запрос через сторонний сервис: http://www.whateverorigin.org/
Получилось типа того: http://jsfiddle.net/VpGVL/
Кто-нибудь нашел как получить все комментарии к посту, а не только 40 последних?

пока вообще не пробовал работать с комментариями
Получилось получить все комментарии из любого media, в последнем релизе библиотеки теперь доступно: https://github.com/raiym/instagram-php-scraper
Тестил на 8 000 комменатриев.

Вот этими двумя url можно сделать пагинацию:

https://www.instagram.com/query/?q=ig_shortcode(BG3Iz-No1IZ){comments.last(300){count,nodes{id,created_at,text,user{id,profile_pic_url,username,follows{count},followed_by{count},biography,full_name,media{count},is_private,external_url,is_verified}},page_info}}

https://www.instagram.com/query/?q=ig_shortcode(BG3Iz-No1IZ){comments.before(17856915757025183,300){count,nodes{id,created_at,text,user{id,profile_pic_url,username,follows{count},followed_by{count},biography,full_name,media{count},is_private,external_url,is_verified}},page_info}}
Как можно получить все фотографии из любого media?
Что вы имеете ввиду под медиа?
Media это фото или видео
Есть ли способ получить username по user id?
Нет, но хотелось бы)
Закомитил сегодня эту возможность. Вот так можно получить

https://www.instagram.com/query/?q=ig_user(3){id,username,external_url,full_name,profile_pic_url,biography,followed_by{count},follows{count},media{count},is_private,is_verified}
Круто! Спасибо!
Спасибо raiym!
Может кто-нибудь знает как достать все лайки у фото/видео?
https://www.instagram.com/p/%post_is%/?__a=1
{media{likes{nodes}}}
Не оно?
А как сделать, например, пагинацию? Чтобы получить все лайки. Насколько я понял нужно залогиниться, без этого нельзя.
Логиниться не обязательно, но как сделать пагинацию меня тоже интересует, потому что показывает только 10 лайкнувших.
А вы не поняли как получить все лайки?
Ну вот я пока что использую эту библиотеку.
Как получить все ссылки на изображения по хештегу? Библиотека умеет такое?
И с авторизацией больше данных отдаётся через параметр "?__a=1". Удалось как-нибудь прикрутить авторизацию?
Получать данные по хештегу Instagram::getMediasByTag('zara', 30);

По поводу авторизации — ее не будет (в ближайшем будущем). проект для получения только публичных данных

вот есть другой: https://github.com/mgp25/Instagram-API
Авторизацию пришлось добавить, так как инстаграм требует ее для получения фоток по тегу и локации
Не нашел не в исходниках, не в описании, как получить список подписчиков. Я вижу кол-во, но мне нужен конкретный список.
Альтернатива метода
/self/follows
В библиотеке пока нет такой возможности, но технически сделать можно.
Можете порадовать?)
Да, буду рад, видеть вас в котрибьюторах)
А если серьезно, то пока такую функциональность никто не имплементировал
Ну будьте первым) Как вас замативировать)
Ну вот параметр '?__a=1' отключили… что будете делать?
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории