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.
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:
-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:
<!–?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:
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:
$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:
(
[_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í:
[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
todavia sigue funcionando???
Me gustaMe gusta
soloelectronicos.com….y si no soy electronico??…..ah?
Me gustaMe gusta
Todos los que les guste la electrónica ( e incluso tampoco les guste) son bienvenidos en este humilde sitio. Lo que ocurre es que a veces se publican artículos muy técnicos que probablemente no interesen a todo el mundo y de ahi el nombre de este sitio
Me gustaMe gusta
Hola soloelectronicos!
Me parece estupendo tu trabajo. Te escribo para consultarte lo siguiente: yo tengo una aplicación web llamada tioconejo.net. Es un resumidor de textos con una version pro para hacer estudios de mercado y otros tipos de investigación cualitativa-textual. Ya yo la tengo enlazada a Twitter, pero me gustaría mucho enlazarla a Whatsapp. El problema es que no manejo nada de github y todo eso, sino que yo trabajo a la antigua (como decimos en Venezuela, a pulmón), así que no sé cómo instalar los enlaces. Si me ayudaras con eso sería genial, que yo me encargo de lugo conectar todo.
Un abrazo con admiración!
Salud!
Me gustaMe gusta
Encantado de conoceerle Igor.No debe tener miedo a github, sobre todo si es programador, pues es eso precisamente un repositorio gigante de software al que todo el mundo puede colaborar ( yo mismo tengo alojado codigo)
Me gustaMe gusta
Que tal,
Y si quisiera enviar mensaje a un grupo de Whatsap?
Me gustaMe gusta
Hola soloelectronicos!
con la version actual de whatsapp, te sigue funcionando tu investigacion?
Me gustaMe gusta
Mucho me temo que no
Me gustaMe gusta
pueden publicar la api , no esta en git, y cuando clono esa que esta ahi, no me permite hacer revert
Me gustaMe gusta
Lo siento pero el API es algo antigua y ademas no es nuestra .
Me gustaMe gusta
Your means of telling the whole thing in this
post is truly fastidious, every one be capable of easily know it, Thanks a lot.
Me gustaMe gusta