Подтвердить что ты не робот

Как мы можем получать уведомления о местонахождении Instagram в режиме реального времени для наших клиентов?

Я работаю над системой, конечными пользователями которой являются владельцы малого и среднего бизнеса. Цель этой функции - получить изображения (в режиме реального времени), которые другие отправляют в Instagram, которые помечены своим местоположением. Обратите внимание, что это отличается от изображений, которые @-tagged с бизнес-учетной записью (т.е. Мы хотим этот фид, а не этот фид).

Я планировал использовать систему подписки в реальном времени, зарегистрированную здесь, поскольку она объясняет, что мы можем подписаться на идентификатор местоположения и получать уведомления о новые носители в этом месте. Мы выкатили его и сразу же начали сбой, потому что есть неопубликованный лимит в 30 подписчиков (я думаю, мы должны были сделать больше googling, прежде чем приступать к его созданию).

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

Существует слишком много учетных записей клиентов, чтобы регистрировать больше приложений, чтобы получать достаточно подписки (нам пришлось бы регистрировать тысячи приложений). Мы надеялись, что мы сможем использовать токен доступа пользователя Instagram, полученный через рабочий процесс Oauth2, чтобы создать больше подписчиков, но мои эксперименты с ними также не были разработаны. Я знаю, что другие люди использовали подписки на большие географические области вместо подписки на размещение, но это не будет достаточно масштабным для нас.

Я расстроен и смущен этой проблемой, потому что:

  • Кажется, что другие приложения получают эти снимки в режиме реального времени по шкале, которая не подходила бы под 30 подписками.
  • Я не могу представить, что многие варианты использования были 30 подписками на одно приложение. Это была бы полезная функция.

Есть ли у кого-нибудь обход? Можно ли использовать учетные данные пользователя Instagram вместо учетных данных приложения? Должен ли я прибегать к регулярному опросу местоположения, а также к стремлениям в реальном времени?

4b9b3361

Ответ 1

Ответы на ваши вопросы:

Для некоторого обходного пути существует web-API: cronjobs обновляет все ваши ссылки и записывает проанализированные данные в вашу базу данных. Достоинства: нет потребностей API applications. Недостатки: иногда изменения веб-API (запросы и/или ответы).

Вы также можете автоматически регистрировать приложение для каждого клиента, добавлять его в БД, подписываться на обновления в режиме реального времени. А затем получите обновления.

Невозможно использовать access-token вместо CLIENT-ID и CLIENT-SECRET.

Просто помните, что "Real-time" photo updates на самом деле не real-time (балансировочная система и т.д.) (из документации: You should build your system to accept multiple update objects per payload), поэтому достаточно обновлений в течение 1 минуты.

UPD

Может быть, помощь, может быть, вы уже знаете этот серый способ ускорения.

Вы можете использовать прямую ссылку для получения носителя по местоположению с помощью web-API. Это проще всего. Все, что вам нужно, это csrftoken из файлов cookie для генерации XHR request. csrftoken может быть от неавторизованного пользователя. Подробную информацию о request можно найти на вкладке Network в Google Chrome.

Простой пример: POST запрос к https://instagram.com/query/ с параметрами q и ref (в примере их значения urldecoded для объяснения):

q=ig_location(237630908){media.after(20000000000000000000000,2){nodes{id,display_src,thumbnail_src}}}&ref=locations::show

Content-type должен быть application/x-www-form-urlencoded; charset=UTF-8.

Веб-заголовки для XHR request:

User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36
Accept: */*
Accept-Language: en-US;q=0.6,en;q=0.4
Referer: https://instagram.com/explore/locations/237630908/
Origin: https://instagram.com
X-Instagram-AJAX: 1
X-Requested-With: XMLHttpRequest
X-CSRFToken: e4e1e1eddd67b2b50b6d8ae7b49e01c0
Cookie: csrftoken=e4e1e1eddd67b2b50b6d8ae7b49e01c0
Content-type: application/x-www-form-urlencoded; charset=UTF-8

(csrftoken в примере с заголовками рандомизируется, не используйте его)

Не используйте его слишком часто, Instagram когда-то отключает некоторую веб-функцию по IP, попробуйте изменения csrftoken.

И ответ:

{
    status: "ok",
    media: {
        nodes: [
        {
            thumbnail_src: "https://scontent-frt3-1.cdninstagram.com/hphotos-xaf1/t51.2885-15/s640x640/sh0.08/e35/c0.135.1080.1080/12142408_1499221190404489_557984803_n.jpg",
            id: "1104470761628620590",
            display_src: "https://scontent-frt3-1.cdninstagram.com/hphotos-xaf1/t51.2885-15/e35/12142408_1499221190404489_557984803_n.jpg"
        },
        {
            thumbnail_src: "https://scontent-frt3-1.cdninstagram.com/hphotos-xaf1/t51.2885-15/s640x640/sh0.08/e35/c0.135.1080.1080/12139611_1663826773904632_2063764196_n.jpg",
            id: "1102282973026047789",
            display_src: "https://scontent-frt3-1.cdninstagram.com/hphotos-xaf1/t51.2885-15/e35/12139611_1663826773904632_2063764196_n.jpg"
        }
        ]
    }
}