Hacking con API’S

“Cuando queremos trabajar con API’s de Facebook, Twitter e Instagram, algunas veces, estas nos frenan.”


Primero vamos a leer la siguiente documentación de Instagram del desarrollador: Revie .

A continuación, podrán ver el lugar exacto donde ellos mismos ratifican que no aceptan apps en modo de test:


Ilustración 1. Líneas exactas donde emiten el NO uso de su Api para aplicaciones en modo test.


El comienzo

Para conocer el funcionamiento de Instagram, fui al buscador y busqué un HashTag:


Ilustración 2. HashTag de Obama.

Más de 3 millones de Posts con el HashTag de #Obama. Ahora, lo que debía recopilar era lo siguiente:


Ilustración 3. Color Negro: Texto del que publica; Color Azul: Comentarios.

Además de recopilar los nombres de usuarios, también debía quedar en un archivo de texto plano.

Un usuario de Underc0de deseaba saber cómo hacer ScrollBar en Twitter, aquí lo haremos con Instagram.

Faltaría, cambiar peras por manzanas, ;)).


Ilustración 4. Botón de cargar más.

Al presionar en “Cargar más”, se cargan las demás publicaciones.

Hay que tener en cuenta, que al presionar se hace una petición a /query/ para traer la información de la siguiente página.


Ilustración 5. Petición a /query/ para obtener la información de la siguiente página.


Ilustración 6. Segunda petición que realiza Instagram para verificar si se cargó correctamente mediante Ajax.

Comprendiendo esto, deducimos que las peticiones a /query/ siempre variará un valor, hace referencia a la página: Página 1, Página dos, Página Tres, Página N. Instagram sigue en sus patrones para conocer la siguiente página una variable llamada
“end_cursor”, la cual indica el “max_id” (el ID de la página siguiente).

Podemos encontrar de la siguiente manera: Tag End Cursor

El tag es Plebiscito, será HashTag #Plebiscito respectivamente. Quedaría de la siguiente forma: Buscando Tags

Al cargarlo, mostrará de manera lineal, por ende, daremos formato con la siguiente página: JsonViewer

Ilustración 7. Formato al JSON del HashTag de Instagram.


Ilustración 8. END_CURSOR que indica la siguiente página al presionar en “Cargar más”.

Al observar detenidamente, observamos el siguiente enlace, un JSON que muestra el end_cursor y también un ‘code’ que hace referencia al código de la imagen:Codigos.


Ilustración 9. “Code” del JSON es el código de la URL en la imagen mostrada.

Asumiendo que la próxima página con fotos mostrará un código determinado por END_CURSOR, hay que automatizar el proceso, que extraigamos los códigos de las imágenes en cada END_CURSOR(página) que nos posicionemos.

Un pequeño script en PHP ayudará a la tarea, cargando todos los end_cursors, todas las páginas y a la vez, obteniendo la variable ‘code’  y almacenándola en un archivo.


Ilustración 10. Script PHP.

ini_set(‘max_execution_time’, 0) es para que no se obtenga un límite de tiempo al intentar obtener todos los ‘code’.

Luego, se crea un loop infinito mientras se va añadiendo al archivo de texto y además de esto, se va obteniendo cada uno de los códigos de las imágenes(‘code’) hasta la última página del hashtag.

Ejecutándolo en un servidor local, podremos observar que imprime y guarda los respectivos códigos.


Ilustración 11. Archivo de texto plano con los códigos de las respectivas imágenes

Al obtener los códigos de las imágenes del HashTag elegido, procede con la lectura del archivo que creo el script de php con python.


Ilustración 12. Función que se encarga de leer el archivo de texto con los códigos de las imágenes.

Una vez leídos, son almacenados en una lista temporal, será enviada a la función que obtendrá los comentarios y el Caption(la descripción de la imagen/foto de la persona que lo publica).

Luego que se almacena la lista y contiene los valores que son los códigos de las imágenes, se envía como parámetro de entrada a la función “get_comments_data”.


Ilustración 13. Función donde son recibidos los códigos de las imágenes como argumentos de entrada.

Es escencial conocer que cada imagen tiene incrustada objetos de Javascript, los cuales se cargan cada vez que se carga una imagen. Por ejemplo: carga de JavaScript


Ilustración 14. Objetos de JavaScript incrustados.

Dando formato, queda de la siguiente manera:


Ilustración 15. Objetos de JavaScript incrustados con formato.

De esta forma, utilizando expresiónes regular con el objetivo de solo obtener la parte que deseamos, así luego accedemos mediante JSON.

La siguiente imagen, brinda más detalle:


Ilustración 16. Expresión regular para recopilar lo que se desea.

El código posee comentarios. Cabe aclarar también se escribe en un archivo individual, cada comentario y username: el comentario como el contenido del archivo y el username como el nombre del archivo.

La siguiente imagen muestra como obtenemos todos los comentarios y nombres de usuario de cada una de las url’s ya cargadas.


Ilustración 17. Script en ejecución.

Para finalizar, ;D :


Ilustración 18. Resultados del script.

El script posee optimización mediante el uso de hilos, ademas contiene cosas de OSINT.

Sin embargo, Instagram, si “frenan” de alguna manera, aprende a realizarlo de otra forma distinta.

Espero que les de idea de cómo también funcionan éstas plataformas, sobretodo, a conceptualizar cosas que quizás desconocían.

Glosario

  • OSINT: Open Source Intelligence.
  • CAPTION: Descripción que realizan las personas al publicar algo.
  • SCROLLBAR: Barra de desplazamiento.

Agradecemos a MORTAL_POISON por brindarnos el material, para descargar los scripts deben ir a Hacking con API’s


Posts Relacionados

Comments

comments

Deja una respuesta

Tu email no será publicado. Los campos requeridos estan marcados con *
Puedes usar tags HTML y los atributos: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">