Querido SimSimi, no soy un Bot sino un script de Python ;)
Por: Samuel López Saura, @elchicodepython.
En este artículo vamos a ver y a explotar una implementación real muy pobre de un Captcha en un
entorno de producción.
El otro día jugando con unas librerías de Python para hacer Web Scrapping me propuse a modo
juego crear un controlador para poder implementar bots en Whatsapp al igual que ya existían en
Telegram para automatizar determinadas tareas de envío de mensajes repetitivos o cualquier otro
uso.
Divagando se me ocurrió conectarlo con SimSimi y dejar que SimSimi recibiera los mensajes que
yo recibiese y respondiera por mi. Pensé en utilizarlo para cuando no quisiera continuar una
conversación dejar que SimSimi la continuase. No obstante dadas las respuestas se iba a quedar en
algo Just For Fun.
SimSimi tiene una API para hacer uso de él pero es de pago y dado que no le iba a sacar ningún
beneficio en principio no era factible.
Así que de igual manera con más Web Scrapping nos comunicaríamos con SimSimi. Cuando
recibiéramos un mensaje por Whatsapp. Se lo mandaríamos a SimSimi, esperaríamos su respuesta y
cuando hubiera respondido responderíamos por whatsapp con la respuesta de SimSimi.
Para manejar todo esto hice uso de la librería Selenium, el navegador Firefox y el lenguaje de
programación Python3.
Todo parecía perfecto. Utilizando este método no tendría que pagar la API y podría hacer uso de
SimSimi todo lo que quisiera.
Pero al parecer al llegar a 20 mensajes saltaba una limitación en la que nos pedían escribir un
número que encontraríamos en un vídeo que tendríamos que ver. Todo parecía haberse acabado
pues mi script en Python en principio no sería capaz de entender el número del vídeo.
No obstante el vídeo era público y estaba en youtube. Y cómo era público, (es decir, todo el mundo
podía verlo sin necesitar especificamente el link) el resto de los vídeos de ese canal también lo eran.
Con lo que me encontré con la irisoria cantidad de 5 vídeos con 5 pines distintos. (que además
tenían los mismos números pero en otro orden)
Además cada vez que saltaba la limitación SimSimi decía la misma frase.
En otras palabras, la condición a la que estábamos esperando era cuando SimSimi diga
Send a password(4 digit number) to talk more.
The video may give you the numbers
Mira el último Link de la página cuyo hipervínculo empiece por https://youtu.be, dame su atributo
href y en el diccionario de pines, que hemos guardado según hemos ido viendo los vídeos y
anotando sus URL y su pin, dame su valor.
a[href^="https://youtu.be
Ahora que ya tengo el pin. Responde con el Pin y sigue funcionando.
En resumen a la hora de utilizar un captcha hay que cumplir unas especificaciones como que no se
pueda leer leyendo el código de la página, que sea aleatorio, no se limite a unas posibilidades, etc...
Si no podemos cumplir por nuestra cuenta o no queremos invertir en ello el tiempo necesario
siempre podemos adquirir el servicio de un tercero que haga implementaciones adecuadas antes que
hacer desastres de este tipo que se puedan saltar en cuestión de minutos. (y digo minutos porque hay
que ver los vídeos para sacar los pines).
No hay comentarios:
Publicar un comentario