WhatsApp como sabemos es un servicio de mensajera para los teléfonos inteligentes que sólo está disponible para smartphones por ahora. Si desea utilizar otras herramientas o escribir aplicaciones web que envíen o reciban mensajes de WhatsApp (e.g. WhatsAPI), usted tiene que encontrar una manera de detectar la contraseña WhatsApp desde su poprio smartphone.
Hasta hace poco, esta contraseña era sólo un hash MD5 de tu IMEI (o dirección MAC), pero eso cambió cuando fue descubierto. Desde entonces, el servidor de WhatsApp asigna una contraseña a cada cuenta del dispositivo cuando registra por primera vez.
Este tutorial muestra cómo captar la contraseña de su cuenta de WhatsApp usando el mitmproxy proxy SSL/TLS. Una vez que usted tiene esta contraseña, lo puede utilizar para comunicarse con los servidores de WhatsApp directamente o a través de un marco (esa es la primera parte ).
Una vez que usted ha adquirido su contraseña de la cuenta de WhatsApp , es relativamente fácil de enviar y recibir mensajes de WhatsApp mediante PHP. Utilizando el framework PHP-based WhatsAPI, un simple script notificador de WhatsApp que tiene sólo una docena de líneas de código.
Este pequeño tutorial muestra cómo usar las dos funciones muy básicas de WhatsAPI, es decir para enviar los mensajes salientes simples a cualquier número y a los nuevos mensajes entrantes desde su propia cuenta de WhatsApp ,mediante PHP.
PARTE 2
1. Obtener su contraseña de WhatsApp
Esta pequeña demostración sólo funciona si usted ya ha obtenido su contraseña de WhatsApp. Si usted no tiene y no imaginas cómo hacerlo, consulte la primera parte de este tutorial.
2. WhatsAPI y enviar/recibir mensajes
Suponiendo que tiene a mano tu contraseña de WhatsApp, vamos a ver lo fácil que es el uso de WhatsAPI.
2.1. WhatsAPI descargar y probar scripts
Descargar WhatsAPI es realmente simplemente puesto que se encuentra alojada en Github. Simplemente cree un nuevo directorio y recuper WhatsAPI desde Github.
Shell mkdir whatsapp
cd whatsapp
sudo apt-get install git
git clone https://github.com/venomous0x/WhatsAPI
1 2 3 4 mkdir whatsapp cd whatsapp sudo apt-get install git git clone https://github.com/venomous0x/WhatsAPI
Una vez que ha hecho esto, puedes revisar la actual estructura del proyecto. También hay un archivo llamado EXAMPLES.php que muestra algunos ejemplos más.
También el autor de este estudio , ha preparado unas pequeñas secuencias de comandos que puede utilizar como base para hacer sus propios scripts:
- whatsapp_whatsapi_send.php es un script de línea de comandos para enviar cadenas a un número dado.
- whatsapp_whatsapi_listen.php a la escucha de los mensajes entrantes y las salidas STDOUT.
- whatsapp_whatsapi_config.php define la configuración (números de origen/destino y WhatsApp contraseña) para los scripts enviar/escuchar
- whatsapp_whatsapi_example_messages.txt muestra la estructura de unos mensajes de WhatsApp (salidaprint_r($msgs) ).
Para descargar dos ejemplos mínimos, ejecute los siguientes comandos y editar el archivo whatsapp_whatsapi_config.php para configurar sus propias credenciales de usuario:
Shell wget
-O whatsapp_whatsapi_send.php
http://blog.philippheckel.com/uploads/2013/07/whatsapp_whatsapi_send.php.txt
wget
-O whatsapp_whatsapi_listen.php
http://blog.philippheckel.com/uploads/2013/07/whatsapp_whatsapi_listen.php.txt
wget
-O whatsapp_whatsapi_config.php
http://blog.philippheckel.com/uploads/2013/07/whatsapp_whatsapi_config.php.txt
wget
-O whatsapp_whatsapi_example_messages.txt
http://blog.philippheckel.com/uploads/2013/07/whatsapp_whatsapi_example_messages.txt
chmod
+x *.php
vi whatsapp_whatsapi_config.php
1 2 3 4 5 6 wget -O whatsapp_whatsapi_send.php http://blog.philippheckel.com/uploads/2013/07/whatsapp_whatsapi_send.php.txt wget -O whatsapp_whatsapi_listen.php http://blog.philippheckel.com/uploads/2013/07/whatsapp_whatsapi_listen.php.txt wget -O whatsapp_whatsapi_config.php http://blog.philippheckel.com/uploads/2013/07/whatsapp_whatsapi_config.php.txt wget -O whatsapp_whatsapi_example_messages.txt http://blog.philippheckel.com/uploads/2013/07/whatsapp_whatsapi_example_messages.txt chmod +x *.php vi whatsapp_whatsapi_config.php
2.2. Enviar mensajes WhatsApp
Como sabe ,desde su cliente desde su smartphone, puede enviar otro tipo de mensajes a través de WhatsApp: además de texto, puede enviar archivos de audio y video, ubicaciones y contactos. WhatsAPI puede hacer todas esas cosas en una sola línea de código.
Como muestra este simple script whatsapp_whatsapi_send.php , se demuestra cómoes de sencillo enviar un mensaje de texto normal. El guión está destinado a ser llamado por la línea de comandos, pero puede utilizarse también el código en una aplicación web:
PHP #!/usr/bin/php
<!–?phprequire_once('whatsapp_whatsapi_config.php');$destinationPhone = ‘495553333333’;$w = new WhatsProt($userPhone, $userIdentity, $userName, $debug);
$w->Connect();
$w->LoginWithPassword($password);
$w->Message($destinationPhone, $argv[1]);?>
1 2 3 4 5 6 7 8 9 10 11 12 13 #!/usr/bin/php <?php require_once(‘whatsapp_whatsapi_config.php’); $destinationPhone = ‘495553333333’; $w = new WhatsProt($userPhone, $userIdentity, $userName, $debug); $w->Connect(); $w->LoginWithPassword($password); $w->Message($destinationPhone, $argv[1]); ?>
El guión incluye la configuración de tu nombre de usuario, contraseña y pantalla de WhatsApp. Es muy fácil de usar y bastante autoexplicativo: la clase WhatsProt es la única cosa que usted necesita. Simple conexión a los servidores de WhatsApp y LoginWithPassword a autenticarse. Después de eso, puede utilizar los siguientes métodos:
- Mensaje ($a, $msg): de $to le enviará un mensaje de texto normal.
- MessageImage ($a, $imageURI): envío de imágenes por URL o ruta de acceso local (jpg) a $to.
- MessageVideo ($a, $videoURI): enviar videos por URL o ruta de acceso local (mp4) a $to.
- MessageAudio ($a, $audioURI): Envíe audios por URL o ruta de acceso local (mp3) a $to.
- Ubicación ($a, $lng, $lat): coordenadas GPS enviar a $to
- vCard ($a, $vCardName, $vCard): enviar vCard a $to.
- WaitForReceipt(): esperar a que los servidores de WhatsApp confirmar la entrega.
El pequeño script ante dicho obviamente sólo envía mensajes de texto sin formato. Se puede utilizar desde la línea de comandos como este:
./whatsapp_whatsapi_send.php “Warning: CPU temperature at 65°C”
1 ./whatsapp_whatsapi_send.php “Warning: CPU temperature at 65°C”
El guión es particularmente útil como un notificador de WhatsApp, permitiéndole recibir notificaciones de sus servidores cada vez que quieras — por ejemplo, si la temperatura de la CPU se eleva por encima de un umbral determinado, la carga es demasiado alta para una cierta cantidad de tiempo o uno de sus guiones falló/tuvo éxito. Esto es particularmente interesante en combinación con un sistema de monitoreo de servicio como Nagios o Monit.
2.3. Recibir mensajes de WhatsApp
Para ser capaz de recibir mensajes de WhatsApp usando PHP, necesita escuchar para nuevos mensajes. De WhatsAPI PollMessages hace exactamente eso:lee los mensajes del zócalo del servidor de WhatsApp y los pone en una cola local para su procesamiento. El método se bloquea si no hay mensajes y espera para que el servidor enviar un mensaje indefinidamente — tal como lo hace cualquier otro servidor. Mediante GetMessages puedes tirar los mensajes de la cola y procesarlos en su aplicación.
Un guión mínimo se vería muy similar a del ejemplo de arriba, excepto que en lugar de llamar a Message(), tienes que llamar PollMessages() y GetMessages() en un bucle de servidor:
PHP <!–?phprequire_once('whatsapp_whatsapi_config.php');$w = new WhatsProt($userPhone, $userIdentity, $userName, $debug);
$w->Connect();
$w->LoginWithPassword($password);while (true) {
$w->PollMessages();
$msgs = $w->GetMessages();
// Do something with the messages …
}?>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?php require_once(‘whatsapp_whatsapi_config.php’); $w = new WhatsProt($userPhone, $userIdentity, $userName, $debug); $w->Connect(); $w->LoginWithPassword($password); while (true) { $w->PollMessages(); $msgs = $w->GetMessages(); // Do something with the messages … } ?>
Cada mensaje de WhatsApp tiene un conjunto de atributos estándar ($m -> _attributeHash) como de (número de remitente) o t (enviar timestamp). Además, dispone de diferentes tipos de nodos secundarios que contienen información adicional/opcional, dependiendo de qué tipo de mensaje es: un nodo secundario de notificar , por ejemplo, dice la conversación socio y que está en línea y sigue escribiendo y el nodo secundario cuerpo contiene el contenido del texto. Hay muchos más de ellos. Puedes ver por ti mismo llamando al print_r($msgs).
El siguiente fragmento de código muestra un extracto de un mensaje — se refieren a la salida de este ejemplo para ver más:
ProtocolNode Object
(
[_tag] => message
[_attributeHash] => Array
(
[from] => [email protected]
[id] => 1373204559-6
[type] => chat
[t] => 1373205620
)[_children] => Array
(
…
[2] => ProtocolNode Object
(
[_tag] => body
…
[_children] =>
[_data] => Hallo blog readers
)
)
[_data] =>
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ProtocolNode Object ( [_tag] => message [_attributeHash] => Array ( [from] => [email protected] [id] => 1373204559-6 [type] => chat [t] => 1373205620 ) [_children] => Array ( … [2] => ProtocolNode Object ( [_tag] => body … [_children] => [_data] => Hallo blog readers ) ) [_data] => )
El ejemplo de servidor script whatsapp_whatsapi_listen.php extiende el fragmento de código anterior y procesa los mensajes como este: toma el tiempo (t) y el número de remitente (de) de $m -> _attributeHash y el nombre y _data del niño nodos. Cada mensaje no vacío se imprime en STDOUT, así:
Shell ./whatsapp_whatsapi_listen.php
[07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Hallo blog readers
[07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Everything I write is printed to STDOUT
[07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Exit
1 2 3 4 ./whatsapp_whatsapi_listen.php [07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Hallo blog readers [07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Everything I write is printed to STDOUT [07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Exit
Si el cuerpo del mensaje es “salir”, sale el guión.
Espero que este tutorial de Philipp C. Heckel nos haya ayudado un poco a comprender cómo funciona WhatsAPI.
Fuente aqui