miércoles, 13 de abril de 2022

Invocando la API de Instagram: Como reaccionar con emojis customizados

Tal vez algunos recordareis cuando invocaba manualmente la API de Badoo hace unos cuantos años para realizar acciones que no estaban permitidas desde el frontend, como poner intervalos de edades no permitidos, descripciones extra-largas...

Pues en esta ocasión vamos a intentar hacer algo parecido con Instagram. Como sabréis, las reacciones a las historias que permite el frontend de Instagram son solo 8. Pero... ¿Y si os digo que podéis usar cualquier emoji, como mis famosas estrellitas? 
Para esto vamos a analizar la llamada a la API que realiza la versión web de Instagram cuando reaccionas a una historia:
Como veis, la llamada a la API tiene un último parametro "reaction_emoji" que puede setearse a cualquier cadena de texto de longitud 1 con un único emoji, a traves del debugger, por ejemplo.

Ocurre exactamente lo mismo con las reacciones a comentarios:
En este caso, lo más probable es que a traves del frontend solo podais reaccionar con el emoji del corazon ❤️. Este emoji por defecto aparece cuando en la llamada a la API el último parámetro para el emoji es una cadena vacía, nulo, o indefinido (el código esta ligeramente obfuscado). En esta ocasion, ademas he podido comprobar que la longitud de la cadena del emoji ¡puede setearse mayor que 1! este texto puede incluir varios emojis, espacios, y saltos de linea (no permite caracteres alfanumericos) aunque al usar varios caracteres, la reacion al comentario es posible que no se muestre correctamente.

Para terminar, si os ha gustado este post, os pongo unos links a videos de YouTube donde otros jaquers se aprovechan de vulnerabilidades ya parcheadas de la API para hacer otras cosas, como hacer crashear la app al abrir una historia:

https://www.youtube.com/watch?v=4jCetFetFQA