register instafeed how example developer javascript instagram instagram-api

javascript - instafeed - Instagram?__ a=1 url ya no funciona y problemas con graphql/query para obtener datos



instagram client id (7)

Actualización 19 de abril

Después de unos días el uso de la cookie ig_pr dos días queda bloqueado. Parece que la única forma de obtener los datos ahora es usar sessionid con un valor específico

Original

Estaba usando instagram? __ a = 1 url para leer todas las publicaciones de los usuarios de instagram.

Hace unas horas hubo un cambio en la respuesta y ahora no me permite usar max_id para paginar.

Antes de enviar generalmente una solicitud a

https://www.instagram.com/{{username}}/?__a=1

y usando el graphql.edge_owner_to_timeline_media.page_info.end_cursor en la respuesta, llamé a la misma página con un nuevo max_id

https://www.instagram.com/{{username}}/?__a=1&max_id={{end_cursor}}

Ahora los cambios en el end_cursor en cada llamada y max_id no está funcionando.

Por favor ayuda :)


A partir de la fecha actual 12 de abril de 2018, 4:00 PM (GMT + 1), las consultas de API funcionan sin ninguna cookie. No tengo idea de lo que están haciendo ...

Solo prueba este enlace en la navegación privada.


Acabo de llegar por el mismo problema.

Parece que acaban de cambiar su API privada eliminando el max_id . Su sitio web parece haber reemplazado la antigua API con la API Graphql.

https://www.instagram.com/graphql/query/?query_hash=472f257a40c653c64c666ce877d59d2b&variables= {"id": "111", "first": 12, "after": "xxx"}

  • ID : ID de usuario,
  • primero : cantidad de nodos a obtener,
  • después : el ''final_cursor'' que puede obtener de los datos [''usuario''] [''edge_owner_to_timeline_media''] [''page_info''] [''end_cursor'']

utilizar query_hash o query_id

  • query_hash : 472f257a40c653c64c666ce877d59d2b
  • ID de consulta: 17888483320059182

No tengo idea de cuánto tiempo funcionará ese query_id / query_hash, depende de Instagram. Eventualmente lo cambiarán.

Actualizado el 8/8/2018 - Antes de que FB no verificara las cookies, parece que agregaron una validación rápida. Intente agregar ig_pr=2 a la cookie de solicitud al enviar su API. Esta solución rápida funciona para mí. Quién sabe cuándo FB lo cambiará de nuevo.

Siempre que FB no imponga el inicio de sesión para estas API básicas, siempre habrá una solución fácil.


El principal problema con el uso de graph / query es que solo tengo el nombre de usuario , para extraer el ID de usuario y la última publicación como la que usamos para hacer? __ a = 1 tenemos que obtener la página de usuario de Instagram y extraer _sharedData

Javascript

let url = "https://www.instagram.com/"+username; $.ajax({ type: ''GET'', url: url, error: function () { //.. }, success: function (data) { data = JSON.parse(data.split("window._sharedData = ")[1].split(";</script>")[0]).entry_data.ProfilePage[0].graphql; console.log(data); } })

Después de obtener todos estos datos, podemos llamar gráfico / consulta (no en el lado del cliente)


El query_hash no cambia, al menos en los últimos días. Indica qué tipo de consulta es.

A continuación se enumeran 4 tipos de consulta que conocía, espero que estos ayuden.

Cargue más medios en https://www.instagram.com/someone/?__a=1

https://www.instagram.com/graphql/query/?query_hash=472f257a40c653c64c666ce877d59d2b&variables={"id":"93024","first":12,"after":"XXXXXXXX"}

(Instagram bloqueó el acceso anterior desde 2018-04-12. Debes eliminar __a = 1 y extraer el JSON dentro de un bloque. Busca "window._sharedData" en el HTML)

Cargue más medios en https://www.instagram.com/explore/tags/iphone/?__a=1

https://www.instagram.com/graphql/query/?query_hash=298b92c8d7cad703f7565aa892ede943&variables={"tag_name":"iphone","first":12,"after":"XXXXXXXX"}

Cargue más medios en https://www.instagram.com/explore/locations/703629436462521/?__a=1

https://www.instagram.com/graphql/query/?query_hash=ac38b90f0f3981c42092016a37c59bf7&variables={"id":"703629436462521","first":12,"after":"XXXXXXXX"}

Cargue más comentarios para https://www.instagram.com/p/Bf-I2P6grhd/

https://www.instagram.com/graphql/query/?query_hash=33ba35852cb50da46f5b5e889df7d159&variables={"shortcode":"Bf-I2P6grhd","first":20,"after":"XXXXXXXX"}

donde XXXXXXXX es el final_cursor de la solicitud original


Esta respuesta no ayuda directamente a la pregunta sino a la publicación porque alguien podría beneficiarse de la respuesta. A partir de la fecha actual del 12 de abril de 2018, la carga de más API no funcionará sin un conjunto de encabezado de Cookie . A continuación se presentan algunos códigos para obtener Instagram público APIS

let url = "https://www.instagram.com/explore/"; if (payload.type == ''location'') { url = url + "locations/" + payload.location_id + "/" + payload.location_name + "/?__a=1"; } else if (payload.type == ''hashtag'') { url = url + "tags/" + payload.hashtag + "/?__a=1"; } else { //profile url = "https://www.instagram.com/" + payload.user_name + "/?__a=1"; } request(url, function (error, response, body) { body = JSON.parse(body); //below are params which are required for load more pagination payload paginationData = { has_next_page: body.data.user.edge_owner_to_timeline_media.page_info.has_next_page, end_cursor: body.data.user.edge_owner_to_timeline_media.page_info.end_cursor }; //user.edge_owner_to_timeline_media for profile posts, //hashtag.edge_hashtag_to_media for hashtag posts //location.edge_location_to_media for location posts });

y para cargar más artículos, estoy usando:

let url = "https://www.instagram.com/graphql/query/"; if (payload.type == ''location'') { let variables = encodeURIComponent(''{"id":"'' + payload.pagination.id + ''","first":50,"after":"'' + payload.pagination.end_cursor + ''"}''); url = url + "?query_hash=ac38b90f0f3981c42092016a37c59bf7&query_id=17865274345132052&variables=" + variables; } else if (payload.type == ''hashtag'') { let variables = encodeURIComponent(''{"tag_name":"'' + payload.pagination.tag_name + ''","first":50,"after":"'' + payload.pagination.end_cursor + ''"}''); url = url + "?query_hash=298b92c8d7cad703f7565aa892ede943&query_id=17875800862117404&variables=" + variables; } else { //profile let variables = encodeURIComponent(''{"id":"'' + payload.pagination.owner_id + ''","first":50,"after":"'' + payload.pagination.end_cursor + ''"}''); url = url + "?query_hash=472f257a40c653c64c666ce877d59d2b&query_id=17888483320059182&variables=" + variables; } let options = { url: url, headers: { Cookie: "Cookie value which i copied from my logged in instagram browser window" } }; request(options, function (error, response, body) { });

Parece que query_id ya no es necesario y query_hash es suficiente ahora. No estoy seguro, pero parece que funciona sin ellos también para mí.


Para la paginación ahora puede usar? __ a = 1 & page = 2


Traducido del código de algunas personas a PHP:

<?php function getPublicInfo($username) { $url = sprintf("https://www.instagram.com/$username"); $content = file_get_contents($url); $content = explode("window._sharedData = ", $content)[1]; $content = explode(";</script>", $content)[0]; $data = json_decode($content, true); return $data[''entry_data''][''ProfilePage''][0]; }

No estoy seguro de cuánto tiempo va a funcionar. Para mi pequeño proyecto hace el trabajo por ahora. El resultado es muy similar (si no es igual) al de la URL: instagram.com/{user}/?__a=1