martes, 25 de julio de 2017

WhatsApp: Cómo conseguir que los mensajes lleguen a contactos que te bloquean



Con la idea en la cabeza de conseguir hacer que un contacto pudiera enviar mensajes a una persona que lo tenga bloqueado se puede hacer la siguiente prueba con un grupo. La persona A tiene bloqueada a la persona B, entonces la persona B no puede enviarle mensajes. La alternativa es que la persona B le pida a la persona C que cree un grupo, y meta en él a la persona A y B, con lo que podrán enviarse mensajes incluso si están bloqueados.

Figura 2: Dos usuarios bloqueados pueden hablar (con check azul)
si un tercero los mete en un grupo juntos

Como esto funciona, lo siguiente sería que hubiera un servicio en Internet al que alguien pudiera poner el número de teléfono de WhatsApp al que quiere enviar un mensaje y que le desbloqueara para que pudiera enviarle mensajes. El proceso sería tan sencillo como automatizar con alguna herramienta los clics que hay que hacer en un cliente WhatsApp Desktop o WhatsApp para algún terminal, para realizar este proceso, así que pedimos una SIM y le pedí a los personajes Pablo González y Ioseba Palop que lo implementaran.

Figura 3: El servicio web para desbloquearte en WhatsApp

Tras unos minutos de hablarlo entre ellos, fueron a hablar con el personaje César Calatrava, que es un experto en la automatización de pruebas y el uso de herramientas como Selenium y Appium. Fue ésta última la que César nos recomendó y nos pasó documentación sobre cómo en la utilizaban para realizar pruebas automáticas sobre dispositivos móviles y Latch.

El proceso que debería tener el servicio es bastante sencillo, y exigiría la siguiente arquitectura:
1. Sitio web en el que se introduzcan el número de teléfono del usuario bloqueado y el número de teléfono del usuario que te tiene bloqueado. 
2. La web lanzará por detrás una llamada al código Python. 
3. El script se conectará con el emulador de Android y se llevarán a cabo las acciones. 
4. En primer lugar, se verificará si los números de teléfono recibidos se encuentran en la agenda. 
5. En caso de que estén, directamente se crea el grupo. 
6. En caso de no estén, se crearán los contactos en la agenda, para poder interactuar con ellos a través de WhatsApp. 
7. Una vez comprobado esto, se crea el grupo metiendo al contacto que te ha bloqueado y a tu contacto. 
8. Tienes un grupo llamado “Desbloqueando…” dónde podrás hablar con el usuario que te bloqueó.
9.- El servicio captura la imagen y el mensaje de perfil y te la envía en el caso de que esté pública 
10.- Recibes el control del grupo Desbloqueando y el que lo creo desaparece.
Aquí tenemos un ejemplo de código utilizado en Appium para automatizar la interacción con el emulador de Android.

Figura 4: Código en Appium para la PoC de Desblouqéame

Esto es una prueba de concepto de un servicio, que sin duda daría mucho juego a muchos usuarios, y que cualquiera podría hacerse en un pequeño rato. Como se puede ver la idea es sencilla y permite hablar con la persona que te bloqueó a través de WhatsApp. Aquí tienes una demo en vídeo del proceso.

Figura 5: PoC de "Desbloquéame WhatsApp"

Al ser un grupo nuevo, si el destinatario entra a ver qué hay ahí, se enviará el doble check - ya se explicó que no se puede deshabilitar en los grupos -. Además, el servicio puede capturar la imagen y el mensaje de perfil de la cuenta A que tiene bloqueada a B - siempre que la tenga abierta para todos - y enviarla al usuario B. Y luego le podría entregar la administración del grupo y salirse de él para no dejar rastro y que para el usuario B el usuario C no exista. Por supuesto, el usuario A podría bloquear al usuario C en el futuro, pero de momento, el servicio funcionaría creando el grupo de conexión.