Как получить реальное изображение HQ из API Instagram? - PullRequest
0 голосов
/ 21 января 2019

Во-первых, уже есть вопросы к этой теме, но ни один из них не покрывает мою проблему полностью, потому что это либо не те данные, которые мне нужны, либо они не работают должным образом.

Существуют такие службы, как InstaDP, которые могутчтобы показать вам HQ версию любой аватарки из Instagram.Интересно, как это возможно?

Я провел некоторое исследование и смог найти URL более высокого качества при доступе к https://www.instagram.com/instagramforbusiness/?__a=1 (см. profile_pic_url_hd, ответ здесь ).Однако у InstaDP, похоже, есть бэкэнд, который возвращает другой URL, который перенаправляет на более качественное изображение: https://instadp -cors-222621.appspot.com / get-hd? Id = 1107766105 (см. Наhd_profile_pic_url_info, я извлек идентификатор для URL из результата ссылки ?__a=1).Я проверил это с помощью своего личного профиля и смог получить изображение самого себя в выдающемся качестве 1024x1024.Однако ссылка ?__a=1, кажется, только возвращает ссылку на мое изображение профиля в формате 320x320.

Поскольку InstaDP, по-видимому, не единственный игрок, способный получать изображения профиля HQ, я пошел дальше и сравнил бэкэнды.из этих игроков.Похоже, что у каждой службы свой URL-адрес к изображению профиля HQ той же учетной записи Instagram.Итак, я пришел к выводу, что во всем этом участвует Instagram API.

Итак, я создал ключ клиента на https://www.instagram.com/developer/.. Я также смог получить свой токен авторизации и определить мой логин csrftoken дляX-CSRFToken заголовок.Теперь мой вопрос: как продолжить?

Я нашел несколько ответов на эту тему, заявив, что я должен запросить https://i.instagram.com/api/v1/users/1107766105/info/,, но он всегда возвращает страницу входа в виде HTML.

Я попробовал REST-клиент, который использует мои файлы cookie Chrome и вошел в Instagram раньше, я попытался установить заголовки HTTP на X-CSRFToken:<mycookietoken> и Content-Type:application/json.(Если я не установил CSRFToken, это приводит к ошибкам, поэтому мне нужно добавить его, но если заголовок установлен, я снова получаю HTML, даже когда CSRFToken верен. Я не получаю ошибку, когдаCSRFToken не так.)

Я также попытался настроить Origin, Referer и Host, чтобы обмануть Instagram, полагая, что запрос пришел из его собственного расположения окна, но не повезло.Установка Host даже вызовет 400 неправильных запросов.Даже добавление моего токена доступа в URL не имело никакого эффекта (?access-token=########).

Подводя итог моему вопросу, как эти службы получают изображения профиля в таком отличном качестве, вплоть до 1024x1024 от cdninstagram сервера?

Ответы [ 3 ]

0 голосов
/ 24 января 2019

Шаги: 1. Получить ссылку на публикацию в Instagram.Например: https://www.instagram.com/p/Bo-Jru-g7Wa/

или, если у вас нет ссылки, API-интерфейс instagram предоставляет вам постоянную ссылку в массиве результатов, которая для вышеуказанной ссылки Bo-Jru-g7Wa

Теперь просто добавьте media? Size = l после URL, т. Е.

Результат : URL-адрес изображения высокого качества:

https://www.instagram.com/p/Bo-Jru-g7Wa/media?size=l

вы можете увидеть его в действии здесь: https://jsfiddle.net/nmj1z7wo/fiddle URL

Эта ссылка может рассматриваться как сокращенный код для URL-адресов изображений Instagram, которыенамного больше

0 голосов
/ 09 мая 2019

Хотя я опаздываю, но это может кому-то помочь:

Шаг 1: Первое, что вам нужно, чтобы получить изображение профиля HD Instagram - это идентификатор своего профиля.Это можно найти в исходном коде ссылки профиля пользователя.Например, если вы просматриваете источник по следующей ссылке https://www.instagram.com/abdulhaq0/ и ищете «logging_page_id», вы получите «profilePage_1285389476».Цифры, следующие за profilePage, являются идентификатором этой учетной записи.

Шаг 2: Затем вам нужно вставить идентификатор в следующий URL https://i.instagram.com/api/v1/users/{ProfileID}/info/ и открыть его в браузере.В нашем случае ссылка будет https://i.instagram.com/api/v1/users/1285389476/info/

Шаг 3: Теперь по ссылке выше найдите «hd_profile_pic_url_info».Там вы можете получить URL-адрес изображения профиля HD в Instagram.

Надеюсь, это помогло.

0 голосов
/ 24 января 2019

Я считаю, что такие сайты, как https://instadp.site/, которые показывают высокое разрешение изображения профиля пользователя, не используют официальный API Instagram.

Раньше можно было взломать URL-адреса CDN в Instagram, чтобы изменить параметры и получить от них высокое разрешение, но в настоящее время URL-адреса подписаны, и если вы измените какие-либо параметры, URL-адрес потерпит неудачу.

Итак, единственное решение, которое они могут использовать, - это эмулировать клиента. Для этого есть популярный PHP-клиент: https://github.com/mgp25/Instagram-API

...