Есть ли способ получить ленту instagram с помощью PHP без входа в систему?


Похоже, что это решение больше не работает -

Как получить ленту пользователя в Instagram

Для нового API требуется токен доступа, который динамически назначается после прохождения страницы входа в систему. Есть ли способ по-прежнему программно передавать канал через PHP, не перепрыгивая через новые обручи oauth? Это полезно для настройки кронтаба для автоматического сохранения новых записей в базу данных.

Author: Community, 2016-06-02

2 answers

Да, ты можешь. Вам не нужно входить в систему или использовать access_token, чтобы получить последние 20 сообщений. Вам просто нужно проанализировать содержимое json из https://www.instagram.com/[USERNAME]/media/. Замените [username] на instagram user_name.

Например.

$instaResult = file_get_contents('https://www.instagram.com/'.$username.'/media/');
$insta = json_decode($instaResult);

ОБНОВЛЕНИЕ: Instagram изменил url-адрес rss-канала пользователя. Для того, чтобы получить rss-канал, вам теперь нужно использовать https://www.instagram.com /[ИМЯ ПОЛЬЗОВАТЕЛЯ]/?__a=1

 24
Author: Laxman, 2017-11-15 07:31:00

Попробуйте эту библиотеку php: https://github.com/postaddictme/instagram-php-scraper

А вот пример (https://github.com/postaddictme/instagram-php-scraper/blob/master/examples/getAccountMediasByUsername.php):

<?php
require __DIR__ . '/../vendor/autoload.php';
// If account is public you can query Instagram without auth
$instagram = new \InstagramScraper\Instagram();
$medias = $instagram->getMedias('kevin', 25);
// Let's look at $media
$media = $medias[0];
echo "Media info:\n";
echo "Id: {$media->getId()}\n";
echo "Shotrcode: {$media->getShortCode()}\n";
echo "Created at: {$media->getCreatedTime()}\n";
echo "Caption: {$media->getCaption()}\n";
echo "Number of comments: {$media->getCommentsCount()}";
echo "Number of likes: {$media->getLikesCount()}";
echo "Get link: {$media->getLink()}";
echo "High resolution image: {$media->getImageHighResolutionUrl()}";
echo "Media type (video or image): {$media->getType()}";
$account = $media->getOwner();
echo "Account info:\n";
echo "Id: {$account->getId()}\n";
echo "Username: {$account->getUsername()}\n";
echo "Full name: {$account->getFullName()}\n";
echo "Profile pic url: {$account->getProfilePicUrl()}\n";
// If account private you should be subscribed and after auth it will be available
$instagram = \InstagramScraper\Instagram::withCredentials('username', 'password', 'path/to/cache/folder');
$instagram->login();
$medias = $instagram->getMedias('private_account', 100);
 0
Author: raiym, 2017-11-16 15:57:12