Posted by & filed under free software, linux.

Since some weeks ago I used a Python library to use Twitter from Linux (I may make an entry about it) It also urged me the question of using WhatsApp from Linux. Today a friend sent me this article (spanish) and trying to replicate the examples I managed myself to get something working.

Everything is made through yowsup (see requirementes) from Tarek Galal which within few simple steps we get a working client.
For the following examples i used a spare SIM card and an old cellphone, first we must register the line.

Registration

First we create a plain text file which we will use to save our ‘profile’, in it it is important to highlight 3 fields.

#Complete phone number
phone=
#IMEI
id=
password=

The first elements will be obtained directly from the cellphone, the ‘password’ field is left in blank at first. Now we execute the following

./yowsup-cli -c [config file] –requestcode sms

It is important to notice that there is no need to do dis more than ONCE. Once done we will receive a sms like this:

WhatsApp code xxx-xxx

So now we execute

./yowsup-cli -c [config file] –register xxxxxx
#Es indistinto colocar o no el guión

which should return

status: ok
kind: free
pw: ###########################
price: US$0.99
price_expiration: 1357561910
currency: USD
cost: 0.99
expiration: 1386034903
login: XXXXXX
type: existing

Now we are currently registered, we have a password (pw) to complete the corresponding field in our text file and are ready to use the client.

Usage

For now im only using 3 functions send, listen, interactive.

Send is quite simple

./yowsup-cli -c [config file] -s [numero destinatario] “message”

Listen mode is as simple as send

./yowsup-cli -c [config file] -l

Here I want to stop to highlight something, if we execute this command as given, whoever sends us a message wont receive the “received notification” (doble check tick) and therefore every time we execute the command we will receive the “unread” messages. To avoid this we add the parameter -a (autoack), as we receive a new message the client will send the corresponding received ack. 

The third and last function I tested is interactive which sort of combines send and listen. It is similar to the listen mode with the addition of having the possibility of replying the message. Note that with this mode we only receive/send message from/to a single contact.

./yowsup-cli -c [config file] -i [contact number]

Lets see 2 images from different endpoints, one in a pc other in a smartphone (spanish)

View from console
View from SmartPhone

Because of what I had previously mentioned I advise using the  -a (autoack) y además el -k (keepalive) parameters. It is also strongly advised to read the given documentation in the repository.

The client alone comes with quite some functions, but doesnt implement all the available functions in the library; for example listed mode doesn’t fetch images. BUT given the fact that this is open source and that Tarek has done some nice code, it is not hard at all add the desired functionalities to the client.

47 Responses to “WhatsApp in Linux with Python”

  1. jose

    me hechas una mano para hacer funcionar yowsup bajo ubuntu.

    Mira tengo el python 2.7 y me bajo el yowsup del enlace que has puesto. a la hora de ejecutar el cliente me pasa esto, no se si es que falta alguna libreria o no se.

    ……python yowsup-cli
    Traceback (most recent call last):
    File “yowsup-cli”, line 27, in
    from Examples.CmdClient import WhatsappCmdClient
    File “/home/jorgeportatil/Descargas/yowsup/src/Examples/CmdClient.py”, line 21, in
    from Yowsup.connectionmanager import YowsupConnectionManager
    File “/home/jorgeportatil/Descargas/yowsup/src/Yowsup/connectionmanager.py”, line 28, in
    from Tools.watime import WATime
    File “/home/jorgeportatil/Descargas/yowsup/src/Yowsup/Tools/watime.py”, line 23, in
    from dateutil import tz
    ImportError: No module named dateutil

    Si me dieras unas nociones basicas. No se como hacerlo funcionar.

    Gracias.

    Reply
    • aleperno

      “ImportError: No module named dateutil”
      Esto significa que no existe el módulo dateutil, que es utilizado por el yowsup.
      Para ello debés instalarlo. La manera más fácil de instalarlo es en una terminal hacer “sudo pip install dateutil”. Si no tenés (o crees no tenerlo) instalado al “pip”, se instala simplemente “sudo apt-get install python-pip”

      Saludos! Cualquier otra duda, intentaré ayudarte.

      Reply
  2. JOSE

    muchas gracias por tu ayuda desinteresada, lo dificil lo haces facil jeje, mañna pruebo y te cuento

    Reply
    • aleperno

      No hay ningún problema! Es el objetivo, intentar hacerlo simple. Yo mismo muchas veces he tenido que “luchar” para hacer funcionar algo. Si le puedo facilitar esa tarea a los demás, es un placer.

      Saludos! De donde eres? España?

      Reply
  3. David

    Hola, ¿sigue este proyecto? ¿Es posible ocultar el estado tal como en iphone modificando algún parámetro en el servidor? Gracias

    Reply
    • aleperno

      Según tengo entendido el proyecto sigue en marcha, la última actualización de código fue hace 10 días. Deberías referirte al repositorio del proyecto para leer la documentación.
      Saludos

      Reply
    • aleperno

      Como andás Martin? Mirá, según tengo entendido (y hay un post al respecto) Whatsapp ya no utiliza el IMEI/MAC como método de generación de clave y si lo sigue haciendo puede ser que haya cambiado el mecanismo.
      Desafortunadamente no tuve tiempo de volver a revisarlo y ver si hay alguna forma alternativa para que vuelva a funcionar.
      Eventualmente lo haré.

      Saludos

      Reply
  4. Favio

    Estoy tratando de registrarme pero no lo logro, esta es la salida:

    ./yowsup-cli -c config.txt –requestcode sms
    status: fail
    retry_after: 1290
    reason: too_recent

    Soy de argentina y mi archivo de configuracion es el siguiente;

    cc=54
    phone=111562xxxxxx
    id=01062500xxxxxxx
    password=

    Espero me puedan ayudar, gracias

    Reply
    • aleperno

      Mil perdones por la tardanza, no ví el comentario.

      too_recent implica que ya hiciste otro pedido igual y ahora tenés que esperar para poder volver a realizar la operación; es para proteger el sistema (como intentar loguear muchas veces con la pass incorrecta).

      Dicho sea de paso, el método descripto en el artículo la última vez que lo probé no funcionaba (el request –sms), es mejor hacerlo mediante la siguente URL:

      https://coderus.openrepos.net/whitesoft/whatsapp_sms

      Saludos!

      Reply
  5. cristian

    esta funcionando y es posible realizar una autorespuesta dependiendo de lo que escriban.
    Saludos

    Reply
    • Ruben

      Cristian, sabes de algun tutorial para hacer lo de autorespuesta, o algunos pequeños pasos para hacerlo. estaria muy agradecido.

      Reply
    • aleperno

      Allow me some minutes so I can check, however bear in mind:
      -1º DNS problems ussually are local problems (eg: your internet connection / configuration)
      -2º This post is one year old, so the software it depends on might have changed.

      Reply
      • aleperno

        Mohammad,
        I’ve just finished up testing if what I had posted still works, and it does flawlessly.

        The only thing to take into consideration, apparently the –requestcode using yowsup-cli does not longer work (not without changing the code), so to request the sms code use https://coderus.openrepos.net/whitesoft/whatsapp_sms

        If you are having any other issues, let me know; I will help as much as I can.

        Cheers and thanks for reading.

        Reply
  6. Fernando

    Hola buenas, estoy realizando un estudio sobre Whatsapp y desarrollo en Python y me interesaría saber si es posible con esta herramienta conocer el momento de la última conexión o si sería posible añadirle esta función (creando yo el código en Phyton necesario).

    Muchas gracias.

    Reply
    • aleperno

      Si.
      Utilizando el código ya existente, lo que se debe hacer es iniciar una sesión interactiva con un número determinado, y luego utilizar el comando “/lastseen”.

      Esto obviamente se puede hacer leyendo el código y escribiendo un script que haga exclusivamente la solicitud de estado de un número(s) determinados.

      Saludos

      Reply
  7. Luis

    Existe un log o un historial de las coversaciones que realizo en el modo interactivo?, donde puedo ubicarlo o como haria para poder leer lo que recibe el yowsup para poder ejecutar un script?.

    Reply
    • aleperno

      Yowsup es una librería, no un cliente. El “cliente” youwsup-cli viene provisto a modo de demostración de las capacidades básicas de la libreria.

      Si mal no recuerdo ni siquiera está implementado recibir imágenes (en su momento yo lo implementé por mi cuenta).

      Q: Existe un log…?
      A: No que yo sepa.

      Q: Donde puedo ubicarlo o como haría para…?
      A: Es cuestión de leer y debuggear el código para ver en que momento recibe el evento “mensaje”, ahí tranquilamente podrías agregar la posibilidad de loguearlo en un archivo, o llamar a un script (o módulo) con ese mensaje como parámetro.

      Tené en cuenta que por defecto el cliente no hace autoack (confirmación de recepción), por lo que si no se aplica esa opción, cada vez que ejecutes el cliente vas a recibir todos los mensajes viejos (cuya recepción no se confirmó).

      Saludos.

      Reply
      • Luis

        Muchas gracias, seguire averiguando y si logro conseguir algo paso por aqui y comento. Saludos

        Reply
  8. Juan

    Hola, creo que he hecho todo bien, pongo el tlf con 34 delante para españa sin el signo +
    Pero me da Auth Failed

    HE cortado y pegado el password que me da de vuelta la llamada (terminado en = y lo incluyo), pero nada
    el id= lo dejo en blanco.

    ¿que puedo estar haciendo mal?
    Muchas gracias por el blog, es muy util.

    Reply
    • aleperno

      Hola, me alegra mucho que el blog sea de utilidad.

      Mediante que método estás solicitando el sms?
      Te recomiendo lo siguiente:
      1º Solicitar el código en esta página:
      https://coderus.openrepos.net/whitesoft/whatsapp_sms

      2º Si te llega el sms, poner ese exacto mismo número (el puesto en la pag) en el config file.
      3º Hacer el –register xxxxxx y copiar el password en el config file.
      4º Intentar abrir una sesión interactiva para corroborar el auth.

      La página web intentá una vez y esperá, es posible que por delays (de la web, telefonía, etc) si hacés otro request te caduque el código viejo y eso sea lo que te impida autenticarte.

      Cualquier cosa volvé a consultar y con gusto te ayudaré.

      Saludos!

      Reply
      • Juan

        Gracias por la contestación.
        Hasta el paso 3 lo había hecho todo bien, sin problema.
        Como hago el paso 4, no se a que te refieres, no entiendo como puedo comprobarlo.
        Muchas gracias de nuevo.

        Reply
          • aleperno

            Claro, no necesariamente hay que abrir una sesión interactiva, también sólo podés mandar un mensaje o ponerlo en modo escucha; solamente hay que ejecutar algún método que necesita la autenticación para verificar que todo ande bien.

            Acá mismo tenés ejemplos (y fotos) de los comandos disponibles

            Para mandar un sólo mensaje
            ./yowsup-cli -c [config file] -s [numero destinatario] “mensaje”
            Para abrir sesión interactiva (mandar y recibir mensajes con un contacto)
            ./yowsup-cli -c [config file] -i [numero destinatario]
            Modo escucha
            ./yowsup-cli -c [config file] -l

            Saludos y espero las noticias!

      • Juan

        Listo, ya está funcionando. Os cuento por qué me daba.
        En otro foro lei que el telefono en el archivo de configuracion de yowsup tenía que tener dos ceros delante, pero de esao nada, además de tener que tener el cc con el país (en mi caso 34 para España) el tlf también tiene que llevar el 34 delante. Asi que funcionando quedaría algo así:

        cc=34
        phone=34123456789
        id=
        password=fafkajshdfkljahsdflkjahds=

        Asi que nada, muchas gracias por la ayuda, la sesion interactiva me sirvió para comprobar y buscar otro enlace donde vi ese detalle, espero que este comentario ayude a alguien más.

        Reply
        • aleperno

          Exacto, no se me ocurrió preguntar por el parámetro cc.
          Es bueno aclararo que SIEMPRE HAY QUE LEER LA DOCUMENTACIÓN de la librería, pues este post es “viejito” y la librería se va actualizando y efectuando cambios.
          Y es la única forma de estar realmente al tanto de los cambios que se van efectuando.

          Muchas gracias por los comentarios y me alegro que ya esté funcionando,
          ahora a usarlo :)

          Saludos

          Reply
  9. Fernando

    Hola de nuevo.

    Más o menos conseguí mis objetivos (conseguí instalarlo e utilicé la función /lastseen algunas veces) pero ahora tengo un nuevo problema.

    La primera vez registré un número de Fonyou y ahora lo quiero hacer con uno propio y real, pero cuando introduzco el código que me llega por SMS el servidor me devuelve:

    status: fail
    reason: stale

    en vez de devolverme el mensaje con:

    status: ok
    pw: password

    No sé si ahora ya no es posible el registro (ya que github ha borrado Yowsup por problemas con Whatsapp) pero me urge bastante y no se solventar ese error.

    Muchas gracias.

    Saludos

    Reply
    • aleperno

      Hola Fernando,

      me alegra que hayas podido conseguir los objetivos de obtención del /lastseen.
      Respecto a la registración de un número telefónico, la ultima vez que registré un número lo tuve que hacer a través de:
      https://coderus.openrepos.net/whitesoft/whatsapp_sms

      ya que el código de Yowsup no funcionaba para dicho registro.

      Desde que Whastapp hizo un reclamo de DMCA (Que ahora sospecho que tuvo algo que ver la compra por parte de Facebook), no hice ninguna prueba.

      Ahora pruebo registrar un número y vuelvo con novedades.

      Saludos!

      Reply
      • aleperno

        Recién pude registrarme a través de la página que te mencioné en la respuesta anterior.

        También pude registrar el código con Yowsup y enviar mensajes. Sin embargo, no pude recibir mensajes. Desconozco el porque. Supongo que son cambios a nivel servidor.

        Saludos

        Reply
        • Fernando

          No, si el código lo pude conseguir (ya lo tuve que obtener de ese modo, con la página que me has mencionado, la primera vez que lo conseguí) el problema me da al enviárselo al servidor, que en vez de contestarme “ok” con el password (pw) me contesta “fail, reason: stale”.

          ¿Has registrado un número que alguna vez registraste en Whatsapp (porque yo lo estoy intentando con un número que no lo ha hecho ni con Whatsapp ni con Yowsup y no lo consigo)?

          Muchas gracias.

          Reply
          • aleperno

            Si, ya he registrado un número previamente registrado.
            Por las dudas vamos a hacer algo de debugging.
            En el archivo de configuración tenés 4 campos.
            cc=54 (El código de tu país sin el +, ejemplo de Argentina es 54).
            phone=549116960xxxx (El número de celular completo)
            password= (Falta que lo envie el server)
            id= (Se puede dejar en blanco).

            Primero y principal verificar que el archivo de configuración esté bien.
            Después, el register, probá poner los números “xxx-xxx” y “xxxxxx” es decir, con y sin guión.
            Si eso sigue sin andar, solicitá un nuevo código y volvé a intentar el registro. Puede ser que haya caducado.

            Otra cosa por el momento no se me ocurre. Si persiste el problema, dejá un mensaje :)

            Saludos

  10. Wouter

    Hola que tal!
    Ante de todo muchas gracias por este blog. Veo que estas ayudando a la comunidad un monton. A ver si me pueden ayudar a mi tambien!

    Mira segui casi todos los pasos, pero cuando toca solicitar la contraseña me pone
    status: fail
    reason: old_version

    sí que ya tengo el ‘Whatsapp code’ de 6 numeros..

    Alguna idea?

    Gracias!

    Reply
    • aleperno

      Hola Wouter,
      antes que nada gracias a vos por pasar por el blog y por tus palabras.

      Te voy a pedir un favor, que ejecutes el yowsup-cli con el argumento “-v”, y pegues aquí las versiones que te figuren en pantalla (tanto del cliente como de YowSup).
      Es factible que en las sucesivas versiones hayan cambiado algo que afecte el mecanismo de registración.

      También intenta solicitando un nuevo código (el de 6 números) y registrarlo; pues tienen un “timeout” y si no los registras en determinada cantidad de tiempo, el mismo caduca imposibilitando el registro.

      Saludos

      Reply
  11. Wouter

    Hola!
    Tendré que poner en un terminal:
    ./yowsup-cli -c [config file] -v
    ?
    es que hoy a la mañana puse
    ./yowsup-cli -v y no me dio nada?

    Gracias!
    Saludos desde holanda, loco!

    Reply
    • aleperno

      Con -v solo debería andar, sino mirá acá te dejo como sacar las versiones de manera fácil ;)

      Que lindo Holanda, buena cerveza y mujeres!!! Nacido donde?
      Saludos!

      Reply
  12. Wouter

    Hola! Ya funciona!
    Como ‘Github’ esta offline había buscado otro lugar donde bajar yowsup, pero era una version mas antigua.. La version mas reciente se puede bajar aca:

    Dropbox: https://www.dropbox.com/s/qevu77wt021t6r8/yowsup-master.zip

    Ahora anda perfecto, y con ‘purple’ puedo chatear con pidgin a mis amigos que tienen whatsapp :)

    Ah, y soy holandes, pero estuve viajando por la argentina.. que lindo pais! Creo que deberiamos hacer un intercambio de todas las mujeres de alla y aca.. es que a mi me gustan mas las de ustedes jajaja

    Reply
    • aleperno

      ESO! Buenísimo que ya funcione!
      Seguramente cambiaron el token entonces detectaba tu request como hecho desde una versión vieja, ahora a disfrutarla!

      Muy buen español! Pense que eras de habla hispana, pero vivías en Holanda!
      Lo de las mujeres, cada una tiene sus encantos :)

      Un saludo!

      PD: Borré tu otro comentario y edité el link de Dropbox de este ;)

      Reply
  13. Wouter

    Hola de nuevo!

    Yo aca, feliz con mi whatsapp en la compu.. pero hay un problema! Con la gente que tiene android es muy dificil comunicar, y hasta a ellos se les traba el whatsapp en so movil!

    Leí sobre personas a quien les pasa lo mismo, pero una buena solución todavía no pude encontrar. A lo mejor tienes alguna idea?.

    Gracias capo!

    Wouter

    Reply
    • aleperno

      Hmm…a que te refieres? A que cuando mandas un mensaje desde Yowsup hacia un usuario que posee Android, la comunicación es “lenta” ?

      Alejandro

      Reply
  14. ramon

    alguna idea del error la clave que ingreso esta bien.

    WAuth: Login Status: failure
    YowsupAuth: Authentication failed!!
    Auth Failed!

    Reply
    • aleperno

      Hmm… Algo debes tener mal en el archivo de configuracion, pues no esta autenticando correctamente.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>