web-dev-qa-db-fra.com

Comment une application comme Whatsdog peut-elle détecter le statut en ligne de l'utilisateur à partir de Whatsapp?

Whatsdog détecte si votre victime est en ligne ou non. Que font-ils en arrière-plan? Nous savons que Whatsapp ne fournit aucune API ou SDK pour cela, alors comment peut-on surveiller ce type d'activité sensible?

7
Tejas Pandya

C'est en fait par une API non documentée de WhatsApp et vous pouvez communiquer via Websockets pour obtenir le statut en ligne des personnes.

Cet article vous montrera comment cela se fait et fournira même un PoC pour qu'il s'exécute dans votre propre navigateur. Ce PoC peut donc être modifié pour être une application PC ou une application smartphone.

7
Nico

Bien que Whatsapp ou Facebook Messenger ne fournissent pas d'API officielle pour le statut en ligne, il est souvent facile d'utiliser leur API interne non officielle, c'est-à-dire pour le déterminer. Je ne peux pas parler pour Whatsapp car je ne suis pas un utilisateur ou beaucoup moins familier avec leur API interne, mais j'ai joué avec cela dans Messenger. La différence conceptuelle est négligeable pour toute application qui fournit une fonction d'état en ligne, je vais donc utiliser Messenger de Facebook comme exemple, car je la connais mieux.

Voici un article de blog (écrit comiquement) expliquant comment cela se fait avec Facebook. Si vous n'avez pas envie de le lire et de creuser dans les détails techniques ou de lire le tout, je vais fournir un bref résumé de la façon dont cela fonctionne ici.

Sur Facebook Messenger, il y a un petit point vert affiché à côté de leur nom qui indique qu'ils sont en ligne, non? Juste comme ça:

lil green dot

Eh bien, l'état de ce point, ou plutôt les données qui indiquent leur statut, est récupéré par une API non documentée ou non officielle. C'est-à-dire, une API utilisée en interne qui n'est destinée à être utilisée par personne d'autre que les développeurs Facebook et ne détient donc aucune promesse et se cassera tout le temps si vous essayez de l'utiliser. C'est cependant le point de côté. Le fait est qu'il y a une demande qui sort périodiquement (c'est-à-dire interrogée) qui vous donne le statut en ligne de vos amis. Si vous l'interrogez au fil du temps, vous serez en mesure de savoir quand un utilisateur passe de hors ligne -> en ligne ou vice versa.

Les applications tierces utilisent ces API et les interrogent comme le fait l'application officielle. Ils font ensuite ce qu'ils veulent avec ces données. Qu'il soit consigné pour représenter graphiquement leurs modèles d'utilisation, vous informant quand ils sont en ligne, nommez-le!

Si cette réponse ne satisfait pas votre curiosité, je vous encourage à lire l'article que j'ai lié ci-dessus. C'est informatif, engageant, drôle et (!) A un dépôt github qui vous permet de l'essayer vous-même.

3
ucklvs

Comme Nico le dit, ils utilisent une API WhatsApp. Le client WhatsApp est capable de vérifier si vos contacts sont en ligne ou non - ce qui signifie qu'il doit y avoir un moyen de le faire.

Il est assez facile pour quelqu'un de décompiler le code ou MitM leurs propres connexions pour lire ce que fait l'application. Le seul risque supplémentaire par rapport à une API publiée est que vous n'avez aucune obligation d'avertir les autres parties avant de la modifier ou de la supprimer.

Vous ne devez jamais faire confiance à un appareil client!

1
Hector